服务器资源列表
master1 | 192.168.191.154 |
node1 | 192.168.191.155 |
node2 | 192.168.191.156 |
修改节点的hostname
#在master1节点执行
hostnamectl set-hostname master1
#在node1节点执行
hostnamectl set-hostname node1
# 在node2节点执行
hostnamectl set-hostname node2
修改/etc/hosts
在每个节点的/etc/hosts中增加如下配置,以方便访问:
192.168.191.154 master1
192.168.191.155 node1
192.168.191.156 node2
同步节点的时间
在每个节点安装ntpdate
yum install -y ntpdate
ntpdate ntp.api.bz
关闭防火墙
每个节点关闭防火墙
iptables -F
systemctl stop firewalld
systemctl disable firewalld
配置内核
增加/etc/sysctl.d/k8s.conf文件,内容如下:
# 1.开启iptables中ipv6的过滤规则
# 2.开启ipv4的过滤规则
# 3.开启服务器的路由转发功能
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
执行以下命令使配置规则生效:
# 加载br_netfilter模块
modprobe br_netfilter
# 加载/etc/sysctl.d/k8s.conf配置
sysctl -p /etc/sysctl.d/k8s.conf
关闭SELinux
执行以下命令关闭SELinux:
setenforce 0
然后修改/etc/selinux/config,将SELINUX的值设置成disabled,防止机器重启后SELinux自动启动
关闭swap
执行以下命令关闭swapoff:
swapoff -a
修改/etc/fstab,将swap那行注释掉,如下图所示:
安装docker
更新yum
yum update
安装需要的软件包,其中,yum-util是提供yum-config-manager功能的,device-mapper-persistent-data和lvm2是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
yum-config-manager --disable docker-ce-edge
yum-config-manager --disable docker-ce-test
更新yum软件包索引并安装docker ce
yum makecache fast
yum -y install docker-ce
启动docker并设置开机自启动
systemctl start docker
systemctl enable docker
更改cgroup driver为systemd(kubelet默认使用的也是systemd),并且为docker添加镜像加速。
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://jzbtfwo9.mirror.aliyuncs.com"]
}
EOF
重启docker
systemctl daemon-reload
systemctl restart docker
安装k8s
配置k8s仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装k8s相关组件
yum -y install kubeadm kubelet kubernetes-cni
systemctl enable kubelet
拉取相关镜像
for i in `kubeadm config images list`; do
imageName=${i#k8s.gcr.io/}
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName
k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done;
初始化master节点
在master节点上执行以下命令:
kubeadm init --kubernetes-version=v1.17.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.198.154
--kubernetes-version 指明要下载的镜像版本
--pod-network-cidr 指明网络的子网掩码,此处使用flannel模型的子网掩码
--apiserver-advertise-address 指明与master结点绑定的ip
注意:执行完初始化命令后,控制台上会有显示两条kubeadm join命令,这两条命令分别用于添加master节点和添加node节点上执行,需要先保存这两条命令。
配置kubectl客户端的config
在master节点上执行以下命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
配置flannel网络
# 下载flannel的yaml文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml
# 执行这个文件生成flannel的pods
kubectl apply -f kube-flannel.yml
添加node节点
在两个node节点上执行不带有--control-plane参数的kubecadm join命令(在初始化master节点时自动生成的),参考如下:
kubeadm join 192.168.217.129:6443 --token vtqzkt.j0u1chomafn1offd --discoverytoken-ca-cert-hash sha256:c25549dc8457677752b8d1b0547acfa8be742cbd5734802b6d2e3e9a6e7e1b73