k8s 1.24.3 kubeadm安装部署
在今年的5月3日,正式发布了1.24版本,目前已经迭代到了1.24.3版本,今天的话,就是完整的介绍下1.24.3版本的一个kuebadm安装方式
这个版本最大的一个变动就是Kubernetes 正式移除对 Dockershim 的支持,讨论很久的 “弃用 Dockershim” 也终于在这个版本画上了句号。
1.24.3版本集群部署-kubeadm方式
主机资源介绍
ip | CPU | 内存 | 磁盘 | 主机名 | 系统 |
192.168.78.10 | 4C | 8G | 50G | k8s-master1 | centos7.8 |
192.168.78.11 | 4C | 8G | 50G | k8s-worker1 | centos7.8 |
192.168.78.12 | 4C | 8G | 50G | k8s-worker2 | centos7.8 |
三台主机的话,都是虚拟机,vmvare直接克隆的,虚拟机生成这里就不介绍了
主机名修改
三台主机分别执行如下修改主机名,并修改/etc/hosts文件
#192.168.78.10
hostnamectl set-hostname k8s-master1
#192.168.78.11
hostnamectl set-hostname k8s-worker1
#192.168.78.12
hostnamectl set-hostname k8s-worker2
修改主机解析文件
三台均需修改
#vim /etc/hosts
192.168.78.10 k8s-master1
192.168.78.11 k8s-worker1
192.168.78.12 k8s-worker2
关闭防火墙
三台均需修改
# systemctl disable firewalld
# systemctl stop firewalld
关闭selinux
三台均需修改
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
时间同步
#yum install ntpdate
#ntpdate time1.aliyun.com
#也可以直接加到定时任务中
crontab -e
0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com
升级内核
三台主机均需操作
操作前查看目前内核版本
#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
# yum --enablerepo="elrepo-kernel" -y install kernel-ml.x86_64
#设置grub2默认引导为0
# grub2-set-default 0
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot
升级后
配置内核转发及网桥过滤
三台均需操作
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
#加载br_netfilter模块
# modprobe br_netfilter
#查看是否加载
# lsmod | grep br_netfilter
br_netfilter 22256 0
bridge 151336 1 br_netfilter
加载网桥过滤及内核转发配置文件
# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
安装ipset及ipvsadm
三台均需操作
安装ipset及ipvsadm
# yum -y install ipset ipvsadm
配置ipvsadm模块加载方式
添加需要加载的模块
# cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
授权、运行、检查是否加载
# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack
关闭swap分区
#swapoff -a
docker及cri-dockerd安装
docker-ce安装
yum -y install docker-ce
docker服务启动
systemctl enable --now docker
修改cgroup启动方式
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
修改后重启docker
# systemctl restart docker
cri-dockerd安装 rpm方式
#wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.5/cri-dockerd-0.2.5-3.el7.src.rpm
#rpm -ivh cri-dockerd-0.2.5-3.el7.x86_64.rpm
#systemctl restart cri-dockerd
#systemctl enable cri-dockerd
k8s集群部署
yum源准备
vim /etc/yum.repos.d/k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
yum安装
# yum -y install kubeadm kubelet kubectl
修改kubelet cgroup启动方式与docker一致
# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
设置kubelet开机启动
#systemctl enable kubelet
kubeadm 初始化
使用阿里云镜像,指定镜像源
#kubeadm init --apiserver-advertise-address=192.168.78.10 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.24.3 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all --cri-socket unix:///var/run/cri-dockerd.sock
输出如下字样表示初始化完成
Your Kubernetes control-plane has initialized successfully!
可以继续往下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
根据打印出的node join方式加入节点
kubeadm join 192.168.78.10:6443 --token cjvznn.pbaaarwmnx273ta0 --discovery-token-ca-cert-hash sha256:929942f5e9f58a32fc644f50147ff6095dd30e60b3245573ba0baeeb60caa4a5 --cri-socket unix:///var/run/cri-dockerd.sock
calico网络插件安装
执行到上面可以看到node节点是非health的,coredns也是异常的
获取calico yaml文件
wget https://docs.projectcalico.org/v3.23/manifests/calico.yaml --no-check-certificate
修改如下配置为初始化中的--pod-network-cidr地址,注意格式
- name: CALICO_IPV4POOL_CIDR
value: "10.224.0.0/16"
然后apply
kubectl apply -f calico.yaml
到这里基本就部署完成了
可以看下目前的节点情况及pod启动情况