使用kubeadm部署Kubernetes集群的步骤
前置准备
-
多台Linux服务器(至少1台master和1台worker节点)
-
推荐操作系统:Ubuntu 20.04/22.04, CentOS 7/8, RHEL 7/8
-
硬件要求:
-
2GB以上RAM
-
2核以上CPU
-
20GB以上磁盘空间
-
-
-
所有节点需要:
-
禁用swap:
swapoff -a
并注释掉/etc/fstab
中的swap行 -
确保唯一主机名
-
确保时间同步
-
确保各节点网络互通
-
安装步骤
1. 所有节点安装基础软件
bash
# 更新系统
sudo apt-get update && sudo apt-get upgrade -y # Ubuntu/Debian
# 或
sudo yum update -y # CentOS/RHEL
# 安装必要工具
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common # Ubuntu/Debian
# 或
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # CentOS/RHEL
2. 所有节点安装Docker容器运行时
bash
# Ubuntu/Debian
sudo apt-get install -y docker.io
sudo systemctl enable docker && sudo systemctl start docker
# CentOS/RHEL
sudo yum install -y docker
sudo systemctl enable docker && sudo systemctl start docker
3. 所有节点安装kubeadm, kubelet和kubectl
bash
# 添加Kubernetes源
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - # Ubuntu/Debian
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
# 或
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo # CentOS/RHEL
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
# 安装kube组件
sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl # Ubuntu/Debian
# 或
sudo yum install -y kubelet kubeadm kubectl # CentOS/RHEL
# 设置开机启动
sudo systemctl enable kubelet
4. Master节点初始化
bash
# 初始化Master节点(替换<master-ip>为你的master节点IP)
sudo kubeadm init --apiserver-advertise-address=<master-ip> --pod-network-cidr=10.244.0.0/16
# 初始化完成后会输出加入集群的命令,类似:
# kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5. 安装网络插件(CNI)
bash
# 安装Flannel网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 或者Calico
# kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
6. Worker节点加入集群
在每个worker节点上执行master节点初始化时输出的kubeadm join
命令:
bash
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
7. 验证集群状态
在master节点上执行:
bash
kubectl get nodes # 查看所有节点状态
kubectl get pods --all-namespaces # 查看所有pod状态
可选配置
重置集群(如果需要重新安装)
bash
sudo kubeadm reset
sudo rm -rf /etc/cni/net.d
sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
生成新的join token(如果原token过期)
bash
kubeadm token create --print-join-command
注意事项
-
确保所有节点防火墙/安全组允许以下端口:
-
Master节点:6443, 2379-2380, 10250, 10251, 10252
-
Worker节点:10250, 30000-32767
-
-
生产环境建议:
-
使用高可用集群(多master节点)
-
配置持久化存储
-
设置RBAC权限控制
-
启用网络策略
-
-
国内用户可能需要配置镜像加速或使用国内镜像源