使用kubeadm部署Kubernetes(k8s)集群的步骤

发布于:2025-06-15 ⋅ 阅读:(16) ⋅ 点赞:(0)

使用kubeadm部署Kubernetes集群的步骤

前置准备

  1. 多台Linux服务器(至少1台master和1台worker节点)

    • 推荐操作系统:Ubuntu 20.04/22.04, CentOS 7/8, RHEL 7/8

    • 硬件要求:

      • 2GB以上RAM

      • 2核以上CPU

      • 20GB以上磁盘空间

  2. 所有节点需要

    • 禁用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

注意事项

  1. 确保所有节点防火墙/安全组允许以下端口:

    • Master节点:6443, 2379-2380, 10250, 10251, 10252

    • Worker节点:10250, 30000-32767

  2. 生产环境建议:

    • 使用高可用集群(多master节点)

    • 配置持久化存储

    • 设置RBAC权限控制

    • 启用网络策略

  3. 国内用户可能需要配置镜像加速或使用国内镜像源