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

相关推荐
Arrtoria1 分钟前
Kernel2.X的内存世界
linux
程序员岳焱3 分钟前
Java 与 MySQL 性能优化:Linux服务器上MySQL性能指标解读与监控方法
linux·后端·mysql
Jooolin3 分钟前
【编程史】Ubuntu到底是啥?它和Linux又是什么关系?
linux·ubuntu·操作系统
西北大程序猿8 分钟前
服务器代码知识点补充
服务器·开发语言·网络·c++·网络协议
苏州向日葵2 小时前
virtualBox安装ubuntu,常用知识点
linux·运维·ubuntu
davidson14712 小时前
gazebo仿真中对无人机集成的相机进行标定(VINS-Fusion)
ubuntu·无人机·slam·d435i·px4·gazebo·vins-fusion
阿福不是狗2 小时前
Python使用总结之Linux部署python3环境
linux·开发语言·python
张海森-1688203 小时前
基于sample_aiisp例子,创建3路编码流,记录
linux
Gnevergiveup3 小时前
路由交换技术-思科拓扑搭建
服务器·vpn·思科·vlan划分·拓扑搭建
搬码临时工3 小时前
别人如何访问我的内网呢? 设置让外网访问内网本地服务器和指定端口应用的几种方式
服务器·网络·智能路由器