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

相关推荐
创世宇图12 分钟前
阿里云Alibaba Cloud Linux 4 LTS 64位生产环境配置-Nginx
linux·nginx
岁岁种桃花儿22 分钟前
AI超级智能开发系列从入门到上天第四篇:AI应用方案设计
java·服务器·开发语言
HelloTonyGo1 小时前
个人游戏笔记本免费“养龙虾”(Win10+WSL2+OpenClaw 部署与配置指南)
windows·ubuntu·wsl2·openclaw
待续3011 小时前
OpenClaw 安装及使用教程(Windows / macOS / Linux)
linux·windows·macos
创世宇图1 小时前
Alibaba Cloud Linux 安装生产环境-mysql
linux·mysql
TEC_INO1 小时前
嵌入式 Linux 开发知识总结
linux·运维·服务器
原来是猿2 小时前
VS Code Remote-SSH 连接失败:提示过程试图写入的管道不存在
linux·服务器·ssh
坚持就完事了2 小时前
Linux中的权限信息
linux·运维·服务器
顶点多余3 小时前
进程间通信 --- 共享内存篇(通信速度最快)
linux·服务器·jvm
co_wait3 小时前
【c 语言】linux下gcc编译工具的使用
linux·c语言·开发语言