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

使用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. 国内用户可能需要配置镜像加速或使用国内镜像源

相关推荐
2603_965148113 小时前
家居百货蓝海:API挖掘高复购率生活小商品
大数据·服务器·人工智能·python·生活
上学的小垃圾6 小时前
基于docker安装MySQL(openEuler系统)
linux·mysql·docker·容器
Eminem896 小时前
8、k8s nodename和nodeSelector调度pod
k8s
cui_ruicheng7 小时前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain
一直C7 小时前
Linux网络编程|HTTP协议详解(报文、请求方法、状态码)
linux·http·wireshark·vim·visual studio
Brilliantwxx10 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
ai小陈10 小时前
FramePack图生视频云端部署实战:从单图输入到视频输出的完整流程
服务器·人工智能·安全·ai·音视频·gpu算力
欧米欧10 小时前
Linux基础指令上
linux·运维·服务器
ARM|X86+FPGA工业主板厂家11 小时前
基于嵌入式 GPU 的智能服务机器人
linux·运维·arm开发·fpga开发·机器人
sulikey12 小时前
Linux 粘滞位(Sticky Bit)完全指南:为什么共享目录需要“防删除“?
linux·服务器