linux

如何在Linux上快速部署K8s

小樊
51
2025-10-05 21:21:48
栏目: 智能运维

如何在Linux上快速部署Kubernetes(K8s)集群

在Linux系统上部署Kubernetes集群,可通过kubeadm工具实现快速配置。以下是详细步骤(以Ubuntu 20.04/22.04为例,其他发行版如CentOS需调整包管理器命令):

一、准备工作

  1. 硬件要求:至少2核CPU、2GB内存、20GB存储(生产环境建议更高配置);
  2. 软件要求:所有节点(Master/Worker)安装相同版本的Docker(或containerd)和kubeadm、kubelet、kubectl;
  3. 网络要求:所有节点之间网络互通,关闭防火墙(或放行Kubernetes相关端口:6443、10250、10255等);
  4. 主机配置:关闭Swap分区(Kubernetes要求),并设置主机名与IP映射(编辑/etc/hosts文件,如192.168.1.100 k8s-master192.168.1.101 k8s-worker1)。

二、安装Docker容器运行时

Kubernetes依赖容器运行时,推荐使用Docker(社区版):

# 更新系统软件包
sudo apt update && sudo apt upgrade -y

# 安装Docker依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg

# 添加Docker软件源
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

# 安装Docker CE
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 启动Docker并设置开机自启
sudo systemctl enable --now docker

# 验证Docker安装
docker version

三、安装kubeadm、kubelet、kubectl

这三个组件是Kubernetes集群的核心管理工具:

# 添加Kubernetes官方GPG密钥
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg

# 添加Kubernetes软件源
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 安装kubeadm、kubelet、kubectl
sudo apt update
sudo apt install -y kubelet kubeadm kubectl

# 锁定组件版本(避免自动升级导致兼容性问题)
sudo apt-mark hold kubelet kubeadm kubectl

四、初始化Master节点

Master节点负责集群管理(调度、API服务等),执行以下命令初始化:

# 初始化Master节点(指定Pod网络CIDR,需与后续网络插件匹配)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 按提示保存kubeadm join命令(用于Worker节点加入集群)
# 示例输出:kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxx

五、配置kubectl(Master节点)

kubectl是管理Kubernetes集群的命令行工具,需配置访问权限:

# 创建.kube目录并复制admin配置文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 验证kubectl配置
kubectl version --client

六、部署网络插件

Kubernetes需要网络插件实现Pod间通信,推荐使用Flannel(轻量易用):

# 部署Flannel网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 验证网络插件状态
kubectl get pods -n kube-system
# 若所有pod状态为"Running",则说明网络插件部署成功

七、加入Worker节点

将Worker节点添加到集群,执行Master节点初始化时输出的kubeadm join命令:

# 在Worker节点上执行(替换为Master节点的实际IP和Token)
sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxx

八、验证集群状态

回到Master节点,检查节点是否全部为"Ready":

kubectl get nodes
# 示例输出:
# NAME         STATUS   ROLES           AGE   VERSION
# k8s-master   Ready    control-plane   5m    v1.28.2
# k8s-worker1  Ready    <none>          2m    v1.28.2

可选:一键部署脚本(简化操作)

若不想逐条执行命令,可使用社区提供的一键部署脚本(如deploy_k8s.sh):

# 下载脚本(以CSDN博主的脚本为例)
wget https://example.com/deploy_k8s.sh

# 赋予执行权限
chmod +x deploy_k8s.sh

# 在Master节点执行(自动完成初始化、网络插件部署)
sudo ./deploy_k8s.sh master

# 在Worker节点执行(自动加入集群)
sudo ./deploy_k8s.sh worker

注意事项

0
看了该问题的人还看了