部署K8S集群
以下是使用阿里云镜像仓库、通过kubeadm在CentOS Stream 8上部署最新版本Kubernetes的详细步骤:
一、环境准备
-
服务器要求:
- 至少2台CentOS Stream 8服务器(1台master,1台或多台node)
- 每台服务器至少2GB内存,2核CPU
- 服务器间网络互通,且能访问互联网
- 每台服务器已设置好静态IP和主机名
-
操作系统初始化(所有节点执行)
# 更新系统
sudo dnf update -y# 关闭SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld# 关闭Swap
sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab# 配置内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFsudo modprobe overlay
sudo 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
EOFsudo sysctl --system# 安装必要工具
sudo dnf install -y curl policycoreutils openssh-server chrony
sudo systemctl enable --now chrony
二、安装容器运行时(containerd)
# 安装containerd
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y containerd.io# 配置containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml# 修改containerd配置使用阿里云镜像和systemd cgroup驱动
sudo sed -i "s#k8s.gcr.io#registry.aliyuncs.com/google_containers#g" /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml# 重启containerd
sudo systemctl restart containerd
sudo systemctl enable containerd
三、添加Kubernetes阿里云YUM源
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch/
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
exclude=kubelet kubeadm kubectl
EOF
四、安装kubeadm、kubelet和kubectl
# 安装最新版本
sudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes# 启动kubelet服务
sudo systemctl enable --now kubelet
五、初始化Master节点
在主节点执行以下命令:
# 初始化集群,使用阿里云镜像仓库
sudo kubeadm init \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version stable-1.30 \--pod-network-cidr=10.244.0.0/16# 配置kubectl(普通用户)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
初始化成功后,会显示加入集群的命令,类似:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
记录下来,稍后用于工作节点加入集群。
六、安装网络插件
# 安装Calico网络插件(使用阿里云镜像)
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml# 替换镜像地址为阿里云镜像
kubectl set image -n kube-system daemonset/calico-node calico-node=registry.aliyuncs.com/google_containers/calico-node:v3.25.0
kubectl set image -n kube-system deployment/calico-kube-controllers calico-kube-controllers=registry.aliyuncs.com/google_containers/calico-kube-controllers:v3.25.0
七、添加工作节点
在所有工作节点上执行前面记录的kubeadm join命令:
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
如果忘记了加入命令,可以在主节点执行:
kubeadm token create --print-join-command
八、验证集群状态
在主节点执行:
# 查看节点状态
kubectl get nodes# 查看系统组件状态
kubectl get pods -n kube-system# 查看集群信息
kubectl cluster-info
当所有节点状态变为Ready时,说明集群部署成功。
九、部署Dashboard(可选)
# 部署Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml# 替换镜像
kubectl set image -n kubernetes-dashboard deployment/kubernetes-dashboard kubernetes-dashboard=registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v2.7.0# 创建管理员用户
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
EOF# 获取登录令牌
kubectl -n kubernetes-dashboard create token admin-user
通过以上步骤,你就成功使用阿里云镜像仓库在CentOS Stream 8上部署了最新版本的Kubernetes集群。如果需要扩展集群,只需在新节点上执行相同的初始化步骤(跳过master初始化)并加入集群即可。