Kubernetes安装与配置

安装Kubernetes

安装方式一(推荐):

参考Kubernetes官网进行安装。

  1. 安装Kubernetes的kubectl、kubeadm和kubelet工具。

    • 支持Kubernetes的版本为1.18.x~1.25.x,推荐使用1.19.x及以上版本。
    • kubeadm和kubelet需要安装在所有节点上,kubectl只需要安装在管理节点上。

  2. 使用kubeadm工具创建Kubernetes集群,安装kubeadm和创建kubernetes集群请参见Kubernetes官网中的使用Kubeadm创建集群章节。

    集群初始化过程如遇到问题,请参见《MindCluster FAQ 》> 安装时出现的故障 > 初始化kubernetes失败”章节

安装方式二:

参考阿里镜像源安装Kubernetes,以下操作均在管理节点进行。推荐使用ARM架构,请用户选择架构为ARM的软件版本。

  1. 获取Kubernetes的kubectl、kubeadm和kubelet软件包,以v1.25版本为例。

    1. 单击阿里Kubernetes镜像官网
    2. 在阿里Kubernetes镜像官网单击“简介”中“新版下载地址”后方的链接,然后进入/core/stable/v1.25/rpm/aarch64目录获取kubectl、kubeadm和kubelet的安装包。

  2. 参考阿里Kubernetes镜像官网首页进行安装Kubernetes的kubectl、kubeadm和kubelet工具。

    如果出现“No match for argument: socat”或者“nothing provides socat needed by xxx”等回显信息,表示环境缺少socat库,解决方式如下所示。(其他库缺失也会有同样的回显,比如eatables、conntrak等)

    使用以下命令自行安装缺失的库。

    #以CentOS系统为例
    yum install -y socat
    #以Ubuntu系统为例
    apt-get install -y socat

  3. 执行以下命令查询部署Kubernetes需要的依赖和镜像,如图1所示。

    kubeadm config images list
    图1 所需依赖及镜像查询结果
    根据查询结果,用户需自行通过docker pull的方式依次进行安装,示例命令如下所示。
    docker pull k8s.gcr.io/kube-apiserver:v1.23.0

  4. 使用以下命令初始化Kubernetes集群,当出现如图2所示回显时,表示初始化成功。

    kubeadm init
    图2 Kubernetes集群初始化成功

    然后执行图2中的内容,如下所示:

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

  5. 执行以下命令查看当前默认启动项状态是否正常,如图3所示,状态为Running即为正常。

    kubectl get pods -A
    图3 查看状态

重置Kubernetes设置

执行以下命令可以重置Kubernetes设置,回显如图4所示则表示重置成功。

kubeadm reset
图4 重置成功

重置成功后,用户需手动删除{$HOME}/.kube/config文件,确保Kubernetes的配置全部删除。

Kubernetes集群增加计算节点

整个集群仅使用一台服务器的情况下,用户无需新增计算节点,可略过下面步骤。

待新增节点需满足以下要求:

已安装Kubernetes基本软件kubeadm和kubelet。

  1. 在管理节点上创建一个新增节点加入集群所需的token和ca-cert码。

    token和ca-cert码的有效期为24小时,如果已过期,请使用以下命令创建。
    • 创建token
      kubeadm token create
    • 创建ca-cert码
      openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
    • 由于上述命令包含明文token,执行后可通过历史操作查询方式显示,导致敏感信息暴露,建议用户采用以下方式进行设置。
      • 在执行敏感命令前执行以下命令临时禁用历史操作查询功能。
        set +o history
      • 完成敏感命令操作后执行以下命令恢复历史查询功能。
        set -o history

  2. 在新节点上执行以下命令加入集群。

    kubeadm join ip:port --token {token} \
            -discovery-token-ca-cert-hash sha256:{ca-cert码}
    参数解释:
    • ip:port:管理节点上Kubernetes的IP地址和端口。
    • --token:节点加入的令牌。
    • -discovery-token-ca-cert-hash:加入集群的证书哈希值。

  3. 在新节点上使用以下命令查询当前节点主机名称。

    hostname

    如节点主机名和集群中其他节点名称冲突,修改/etc/hostname文件更改节点的主机名。

  4. 在管理节点上使用以下命令kubectl get nodes -A查看节点信息,如图5所示,localhost.localdomain即为新增节点。

    图5 新增节点

  5. 在管理节点上使用以下命令根据实际的NPU设备类型为新增节点打上accelerator=huawei-Ascend910或者accelerator=huawei-Ascend310x标签。

    #kubectl label nodes {节点名称} accelerator=huawei-Ascend910
    kubectl label nodes localhost.localdomain accelerator=huawei-Ascend910

  6. 在管理节点上使用以下命令查看为新增节点打上的“accelerator=huawei-Ascend910”标签,如图6所示,有“accelerator=huawei-Ascend910”则表示成功。

    kubectl get nodes --show-labels
    图6 accelerator=huawei-Ascend910标签