使用 kubeadm 在 VMW 部署 k8s 集群之基础环境配置

本文档详细说明如何使用kubeadmVMware Workstation Pro部署k8s集群。

环境配置信息

实验采用一台主节点k8s-master、二台工作节点k8s-node01、k8s-node02来部署。存储使用glusterfs为后端,StorageClass动态创建PersistentVolumeClaim

主机名 IP 地址 CPU RAM 磁盘 OS docker版本 kubeadm 版本 glusterfs 版本 heketi 版本 角色
k8s-master 192.168.1.70 4核 4G sda(用于OS)、sdb(用于glusterfs) CentOS 7.6.1810 18.09.6 1.15.0 6.1 8.0.0 k8s-master、glusterfs、heketi
k8s-node01 192.168.1.71 4核 4G sda(用于OS)、sdb(用于glusterfs) CentOS 7.6.1810 18.09.6 1.15.0 6.1 / k8s-node、glusterfs
k8s-node02 192.168.1.72 4核 4G sda(用于OS)、sdb(用于glusterfs) CentOS 7.6.1810 18.09.6 1.15.0 6.1 / k8s-node、glusterfs

基础环境配置

以下所有操作需在所有节点上执行,以root用户执行,文档以在k8s-master上操作为例。

设置主机名

1
hostnamectl set-hostname k8s-master

设置静态 IP

1
2
3
4
5
6
7
8
9
10
11
# 设置 IP
nmcli c modify ens33 ipv4.addresses 192.168.1.70/24
# 设置网关
nmcli c modify ens33 ipv4.gateway 192.168.1.1
# 设置 DNS
nmcli c modify ens33 ipv4.dns 192.168.1.1
# 设置 IP 获取方式
nmcli c modify ens33 ipv4.method manual
# 重启网卡
nmcli c down ens33
nmcli c up ens33

添加 hosts 条目

1
2
3
4
cat /etc/hosts
192.168.1.70 k8s-master
192.168.1.71 k8s-node01
192.168.1.72 k8s-node02

禁用 SELinux

1
2
3
4
5
6
# 临时禁用 SELinux
setenforce 0
# 永久禁用 SELinux
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/g' /etc/sysconfig/selinux
# 查看 SELinux 状态
getenforce

禁用 SWAP

1
2
swapoff -a
sed -i '/.* swap .*/d' /etc/fstab

禁用防火墙

1
2
systemctl stop firewalld
systemctl disable firewalld

加载内核模块

1
2
3
modprobe br_netfilter
# 查看是否加载成功
lsmod | grep br_netfilter

修改内核参数

1
2
3
4
5
6
cat /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
# 从文件加载内核参数,以便生效
sysctl -p

安装 Docker Engine

安装 Docker

1
2
3
4
5
6
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Yum 源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 docker-ce
yum install -y docker-ce

更改 Docker 数据存放目录

1
2
3
4
5
6
7
8
9
# 创建新数据存放目录
mkdir -p /data/docker
# 创建配置文件存放目录
mkdir -p /etc/docker
# 添加 daemon.json 配置
cat /etc/docker/daemon.json
{
"data-root":"/data/docker"
}

(可选)添加代理

1
2
3
4
5
# 这步主要是为了 kubeadm 初始化时能从 k8s.gcr.io 拉取镜像
cat /usr/lib/systemd/system/docker.service
# 在 [Service] 段添加以下参数
Environment="HTTPS_PROXY=http://代理IP:代理端口"
Environment="NO_PROXY=127.0.0.1/8,172.16.0.0/16"
1
systemctl daemon-reload

启用 docker 服务

1
2
systemctl enable docker
systemctl start docker

验证

1
2
3
4
# 验证数据存放目录是否已更改
docker info | grep 'Root Dir'
# 验证代理是否生效
docker info | grep 'Proxy'

到此,基础环境已经配置好,下一节我们将部署glusterfs分布式存储。

一分、两分都是爱!