---
title: 部署K8s集群
description: "部署K8s集群的主要步骤包括配置管理节点和计算节点以及在管理节点添加Flannel网络插件。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/Kubernetes/kunpengk8s_04_0007.html
sourcePath: /source/zh/kunpengcpfs/ecosystemEnable/Kubernetes/kunpengk8s_04_0007.html
indexId: 3e4b1886885995a9966c56cbd5637fed3f377051b100ddf764435440b8c980f373
---
# 部署K8s集群

部署K8s集群的主要步骤包括配置管理节点和计算节点以及在管理节点添加Flannel网络插件。

#### 配置管理节点

如果需要重新搭建K8s集群，需要先清除旧的K8s集群设置，具体操作步骤请参见卸载K8s。


1. 可选：排查是否有配置代理。如果已配置代理，请删除代理，以避免kubeadm init初始化超时失败。

  a. 查看是否配置了代理。
    1 env|grep -E "http_proxy|https_proxy|no_proxy"

    如果返回结果则配置了代理。

  b. 删除代理。
    1 2 3 export -n http_proxy export -n https_proxy export -n no_proxy

2. 如果使用的是CentOS系统，请忽略此步骤；如果使用的是openEuler系统，则需要手动创建resolv.conf文件。在集群初始化需要检验是否存在resolv.conf文件，如果文件不存在，会产生报错。创建resolv.conf文件的命令为：
  1 touch /etc/resolv.conf

3. 在管理节点上执行集群初始化命令。

```
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version
v1.23.1
```


  v1.23.1表示Kubernetes的版本号，请根据实际情况修改。 计算节点不需要执行集群初始化操作。 如果在管理节点初始化的时候提示如下信息。 1 /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1 可以通过执行如下命令将/proc/sys/net/bridge/bridge-nf-call-iptables的值配置为1（vim命令不支持修改此文件）。 1 echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables --pod-network-cidr选项用于指定Kubernetes网络可以使用的IP地址段，由于后续使用Flannel网络插件，该插件固定使用的IP地址段为：10.244.0.0/16。 --control-plane-endpoint选项用于为控制平面指定一个稳定的IP地址或DNS名称。kubeadm 1.15及以后版本支持该选项，若需要配置该选项，可直接在初始化命令后添加该参数。

  图1 管理节点成功初始化信息

  如果打印此信息如图1所示，则管理节点成功被初始化。

  在图1中，黄框信息表示管理节点配置集群需要执行的命令，红框信息表示计算节点加入集群的token命令，请保存该段命令。

4. 配置集群。
  1 2 3 4 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf

5. 在管理节点查看集群节点信息。
  1 kubectl get nodes

6. 保存管理节点生成的加入集群信息。
  该信息在成功初始化管理节点后生成并打印，集群信息如下所示。

  1 kubeadm join 192.168.1.11:6443 --token a9020j.vnfgqk7n30p5d9z0 --discovery-token-ca-cert-hash sha256: c465651177b41c545fe20f8dc052b9661a8375afdeac7e7ecf52029fc66a506a

  该token命令可以用于24小时内计算节点加入集群。

  集群加入token是随机生成的，在搭建集群时需要使用实际生成的指令。 token默认有效期为24小时，若token超时，可在K8s管理节点通过如下命令进行重新生成。 1 kubeadm token create --print-join-command


#### 配置计算节点

1. 可选：如果Kubernetes工作节点已经配置了http和https代理，需要删除代理。
  1 2 3 export -n http_proxy export -n https_proxy export -n no_proxy

2. 计算节点加入集群。

  a. 在计算节点中执行以下命令以加入集群。
    1 kubeadm join 192.168.1.11:6443 --token a9020j.vnfgqk7n30p5d9z0 --discovery-token-ca-cert-hash sha256: c465651177b41c545fe20f8dc052b9661a8375afdeac7e7ecf52029fc66a506a

    该token命令可以用于24小时内计算节点加入集群。

    集群加入token是随机生成的，在搭建集群时需要使用实际生成的指令。 token默认有效期为24小时，若token超时，可在K8s管理节点通过如下命令进行重新生成。 1 kubeadm token create --print-join-command

  b. 约等待1min后，在管理节点查看集群中加入的计算节点。
    1 kubectl get nodes

    预期结果示例：

    1 2 3 4 NAME STATUS ROLES AGE VERSION master NotReady master 12h v1.23.1 compute01 NotReady <none> 11h v1.23.1 compute02 NotReady <none> 11h v1.23.1

3. 在管理节点和计算节点上查看kubelet服务状态。
  1 systemctl status kubelet

  预期结果示例：


#### 添加Flannel网络插件

在管理节点添加Flannel网络插件，以解决各主机节点上Pod之间的网络通信问题。

1. 下载Flannel网络插件配置文件。
  1 wget --no-check-certificate https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

2. 修改kube-flannel.yml文件以配置资源。

  a. 打开文件。
    1 vim kube-flannel.yml

  b. 按“i”进入编辑模式，在resources下修改Flannel网络插件使用的资源，请参考下图并根据实际情况配置。
    1 2 3 4 5 6 7 resources: requests: cpu: "100m" memory: "50Mi" limits: cpu: "200m" memory: "100Mi"

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
3. 安装Flannel插件。
  1 kubectl apply -f kube-flannel.yml

4. 在管理节点查看节点状态。

```
kubectl get nodes
```


  可以看到节点的状态变成了Ready。预期结果示例：

  1 2 3 4 NAME STATUS ROLES AGE VERSION master Ready master 12h v1.23.1 compute01 Ready <none> 11h v1.23.1 compute02 Ready <none> 11h v1.23.1

5. 在管理节点查看各Pod状态。
  1 kubectl get pod -A

  命令返回中，READY显示为1/1时，表示Pod正常运行。

  图2 pod status
