Kubernetes v1.24集群安装配置步骤总结
一、环境准备
(一)系统要求
- 运行兼容deb/rpm的Linux操作系统(如Ubuntu或CentOS)的计算机,1台或多台。
- 每台机器内存2GB以上,内存不足会限制应用运行。
- 控制平面节点的计算机至少有2个CPU。
- 集群中所有计算机之间有完全的网络连接,可使用公共网络或专用网络。
(二)主机环境配置(以Ubuntu 20.04为例)
- 系统安装
- 下载Ubuntu 20.04.4镜像:https://mirrors.aliyun.com/ubuntu-releases/20.04.4/ubuntu-20.04.4-live-server-amd64.iso。
- 修改镜像源
- 将默认镜像源
http://cn.archive.ubuntu.com/ubuntu
修改为清华大学镜像源https://mirrors.tuna.tsinghua.edu.cn/ubuntu
。 - 修改方式:
- 安装虚拟机时直接修改镜像地址。
- 已安装系统时,修改
/etc/apt/sources.list
文件,替换地址后执行sudo apt-get update
(修改前先备份文件)。
- 将默认镜像源
- 安装Docker 20.10.17
二、安装cri-dockerd容器运行时
(一)方式一:二进制文件下载安装
- 查看内核信息
cat /proc/version
- 下载对应版本
- 根据内核信息从GitHub Release页面选择文件,例如:https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz。
- 下载并解压:
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.amd64.tgz tar -zxvf cri-dockerd-0.3.1.amd64.tgz -C /tmp sudo cp /tmp/cri-dockerd/cri-dockerd /usr/bin/
(二)方式二:通过Docker构建
- 下载源码并编译
git clone https://github.com/Mirantis/cri-dockerd.git cd cri-dockerd git tag # 查看可用tag git checkout v0.3.1 # 切换到目标版本
- 创建Dockerfile并构建
FROM golang:1.18 ADD ./ /go/src/cri-dockerd WORKDIR /go/src/cri-dockerd RUN go env -w GOPROXY=https://proxy.golang.com.cn,https://goproxy.cn,direct RUN go build -o cri-dockerd
docker build -t cri-dockerd:latest . docker run --rm -d -it --name cri-dockerd cri-dockerd:latest bash docker cp cri-dockerd:/go/src/cri-dockerd/cri-dockerd ./ sudo cp cri-dockerd /usr/bin/
(三)配置和启动cri-dockerd服务
- 获取systemd配置文件
git clone https://github.com/Mirantis/cri-dockerd.git sudo cp cri-dockerd/packaging/systemd/* /etc/systemd/system/
- 修改服务配置
- 在
/etc/systemd/system/cri-docker.service
的ExecStart
字段中添加:
--network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
- 在
- 启动服务
sudo systemctl daemon-reload sudo systemctl enable cri-docker sudo systemctl start cri-docker sudo systemctl status cri-docker # 检查状态
三、安装kubeadm、kubelet、kubectl
- 更新包管理器并安装依赖
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl
- 下载gpg密钥
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
- 设置Kubernetes镜像源
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
- 安装指定版本(示例:1.24.1)
sudo apt-get update sudo apt-get install -y kubelet=1.24.1-00 kubeadm=1.24.1-00 kubectl=1.24.1-00
- 锁定版本(防止自动升级)
sudo apt-mark hold kubelet kubeadm kubectl
- 检查kubelet状态
systemctl status kubelet
四、主机环境调整
- 修改Docker的cgroup driver为systemd
- 创建或修改
/etc/docker/daemon.json
,添加:
{ "exec-opts": ["native.cgroupdriver=systemd"] }
- 重启Docker:
sudo systemctl daemon-reload sudo systemctl restart docker
- 创建或修改
- 关闭防火墙
sudo systemctl stop firewalld sudo systemctl disable firewalld
- 禁用SELinux
sudo apt install selinux-utils getenforce # 查看状态 sudo setenforce 0 # 临时禁用
- 禁用swap
free # 查看交换区 sudo swapoff -a # 临时关闭 # 修改/etc/fstab,注释掉swap相关行
- 修改主机名(以k8s-master1为例)
- 添加IP映射到
/etc/hosts
:
127.0.1.1 k8s-master1
- 修改系统主机名:
sudo hostnamectl set-hostname k8s-master1 hostname # 查看主机名
- 添加IP映射到
五、初始化Master节点
- 生成默认配置文件
kubeadm config print init-defaults > init.default.yaml
- 修改配置文件
init.default.yaml
- 添加或修改以下内容:
localAPIEndpoint: advertiseAddress: 192.168.239.146 # 替换为实际IP nodeRegistration: criSocket: unix:///var/run/cri-dockerd.sock name: k8s-master1 # 替换为主机名 imageRepository: registry.aliyuncs.com/google_containers # 国内镜像源 kubernetesVersion: 1.24.1 networking: podSubnet: 10.244.0.0/16 # flannel默认网络段
- 拉取镜像
sudo kubeadm config images pull --config=init.default.yaml
- 初始化集群
sudo kubeadm init --config=init.default.yaml # 或通过参数初始化 kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.24.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.239.146 --cri-socket unix:///var/run/cri-dockerd.sock
- 配置kubectl
- 普通用户执行:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
- root用户执行:
export KUBECONFIG=/etc/kubernetes/admin.conf source /etc/profile # 立即生效
六、添加网络组件(以flannel为例)
- 下载或应用配置文件
- 方法一:下载到本地后应用
wget https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml kubectl apply -f kube-flannel.yml
- 方法二:直接应用远程文件(若域名可解析)
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
- 解决域名解析异常(若出现)
- 查询
raw.githubusercontent.com
的IP地址(如185.199.108.133),添加到/etc/hosts
:
185.199.108.133 raw.githubusercontent.com
- 查询
- 开启kube-proxy的ipvs模式
kubectl edit -n kube-system cm kube-proxy # 修改mode: "ipvs" kubectl rollout restart -n kube-system daemonset kube-proxy
- 查看集群状态
kubectl get pod --all-namespaces kubectl get node kubectl get cs
七、Node节点初始化与加入集群
(一)环境安装(同Master节点)
- 安装Docker和cri-dockerd并启动服务。
- 安装kubeadm、kubelet、kubectl。
(二)节点环境修改(同Master节点)
- 修改Docker的cgroup driver。
- 关闭防火墙、禁用SELinux和swap。
(三)加入集群
- 在Master节点获取加入命令
sudo kubeadm token create --print-join-command
- 在Node节点执行加入命令(附加cri-socket参数)
kubeadm join 192.168.239.146:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:bac9b53b18b0bfcb3b923f970771e48d489ed7c77625c8fa3785608c6f191a79 --cri-socket unix:///var/run/cri-dockerd.sock
八、重置节点(可选)
sudo kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
sudo rm -rf /var/lib/kubelet /var/lib/dockershim /var/run/kubernetes /var/lib/cni /etc/cni/net.d $HOME/.kube/config
sudo ipvsadm --clear
sudo ifconfig cni0 down
sudo ip link delete cni0
https://github.com/0voice