使用 Kubespray 安装 kubernetes 时是否可以只安装 master?

问题描述

我正在尝试使用 kubespray 安装 kubernetes。

我已经成功配置了master和worker,但是我想知道是否只能安装没有worker的master。在 inventory.ini 中,仅指定了 master 的主机名并继续安装,并显示以下失败消息。

有没有办法只安装 master ,不包括 kubespray 的 worker? 帮助!

    failed: [node1] (item=kube-node) => {
    "ansible_loop_var": "item","assertion": "groups.get('kube-node')","changed": false,"evaluated_to": false,"item": "kube-node","msg": "Assertion failed"
}

解决方法

您可以尝试使用 ignore_assert_errors=yes 选项,我知道这听起来像是一种解决方法,但它似乎按预期工作。 我不确定 kubespray documentation 中是否只涉及安装单个主节点。


我将创建一个简单的例子来说明它是如何工作的。

假设我有一个实例,我希望它成为 Kubernetes 主节点:

# ifconfig ens4
ens4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1460
        inet 10.186.15.206  netmask 255.255.255.255  broadcast 10.186.15.206
    

首先,我准备了库存文件:

# cat inventory/mycluster/hosts.yaml 
all:
  hosts:
    node1:
      ansible_host: 10.186.15.206
      ip: 10.186.15.206
      access_ip: 10.186.15.206
  children:
    kube_control_plane:
      hosts:
        node1:
    kube-node:
      hosts: {}
    etcd:
      hosts:
        node1:
    k8s-cluster:
      children:
        kube_control_plane:
        kube-node:
    calico-rr:
      hosts: {}
  
  

然后我用 Ansible Playbook 部署了 Kubespray:
注意:我使用了 -e ignore_assert_errors=yes 选项。

# ansible-playbook -i inventory/mycluster/hosts.yaml  --become --become-user=root cluster.yml -e ignore_assert_errors=yes
...
PLAY RECAP ***********************************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node1                      : ok=555  changed=121  unreachable=0    failed=0    skipped=1128 rescued=0    ignored=2 

安装成功后,我们可以检查node1是否真的是主节点:

# kubectl get nodes
NAME    STATUS   ROLES                  AGE     VERSION
node1   Ready    control-plane,master   4m30s   v1.20.6

# kubectl describe nodes node1 | grep -i taint
Taints:             node-role.kubernetes.io/master:NoSchedule

如您所见,节点 node1 有一个 node-role.kubernetes.io/master:NoSchedule 污点,表明它确实是主节点。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...