使用kubeadm部署Kubernetes(k8s)集群的步骤
使用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权限控制
-
启用网络策略
-
-
国内用户可能需要配置镜像加速或使用国内镜像源