使用kubeadm 部署 k8s 1.25版本
一、环境要求
资源:至少2c2g10gb 的资源
hosts
192.16.30.100 | k8s-master |
192.16.30.101 | k8s-node01 |
192.16.30.102 | k8s-node2 |
系统及内核版本
[root@k8s-master ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@k8s-master ~]# uname -r 3.10.0-1160.el7.x86_64
二、基础环境配置(所有节点执行)
1、配置hostname并添加hosts
hostnamectl set-hostname k8s-master (master)
hostnamectl set-hostname k8s-node01 (node01)
hostnamectl set-hostname k8s-node02 (node02)
在所有节点添加
cat << EOF >> /etc/hosts 192.16.30.100 k8s-master 192.16.30.101 k8s-node01 192.16.30.102 k8s-node02 EOF
2、配置时钟
yum install ntpdate -y
ntpdate ntp1.aliyun.com
保持所有主机时钟一致
3、关闭防火墙和selinux
# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld systemctl stop iptables systemctl disable iptables # 关闭selinux setenforce 0 sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
4、禁用交换分区
为了保证 kubelet 正常工作,你必须禁用交换分区。
swapoff -a sed -i 's/.*swap.*/#&/' /etc/fstab
三、配置 repo 安装 containerd、kubelet、kubeadm、kubectl
配置docker-ce源 安装 containerd 1.安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 Step
2.添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
3.配置kubernetes源 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 epo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg EOF
四、安装及配置(所有节点执行)
1、部署 containerd
Kubernates 中 pod 的运行必须有容器运行环境,以前 kubernetes 是使用 Docker,后面主要使用 containerd 等,只安装 containerd 即可
移除可能安装过的 Docker 包
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
安装 yum-utils
yum install -y yum-utils
安装 containerd
yum install containerd.io -y
配置 containerd
设置开机自启
systemctl enable containerd
systemctl start containerd
修改 containerd 使用 systemd
containerd config default > /etc/containerd/config.toml sed -i 's#k8s.gcr.io#registry.aliyuncs.com/google_containers#g' /etc/containerd/config.toml sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml 修改sandbox_image的值 sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"
重启 containerd
systemctl daemon-reload
systemctl enable --now containerd
systemctl restart containerd
五、部署 kubernetes组件
kubelet、kubeadm、kubectl
查看可用的版本,以kubelet为例
yum list kubelet --showduplicates
安装并配置自启动,这里安装1.25.4-0
yum install -y kubelet-1.25.4-0 kubeadm-1.25.4-0 kubectl-1.25.4-0 --nogpgcheck (这个参数要加,否则会安装失败)
systemctl enable kubelet
六、配置 kubernetes
确认iptables 参数 为1 :
# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
# cat /proc/sys/net/bridge/bridge-nf-call-iptables
通用配置项
cat << EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
modprobe overlay
modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF
执行 sysctl --system 使以上配置生效
七、安装和设置crictl
# VERSION="v1.23.0"
# curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz
# crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock
八、初始化集群
初始化master (只在master节点执行)
kubeadm init \ --image-repository=registry.aliyuncs.com/google_containers \ --pod-network-cidr=192.17.0.0/16 \ --service-cidr=192.18.0.0/16 \ --ignore-preflight-errors=all
等待片刻,没有报错说明部署成功了。
九、配置网络插件 calico
1、安装插件:
# kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
操作完成后稍等一会儿就会自动处于Ready状态。
2、如果一直没有变为Ready状态,切查看message 日志一直在报错:cni plugin not initialized
解决办法如下,具体参考:https://github.com/flannel-io/flannel/issues/1236