用Kubespray安装kubernetes时是否可以只安装master?
Is it possible to install only master when installing kubernetes with Kubespray?
我正在尝试使用 kubespray 安装 kubernetes。
我已经成功配置master和worker,但是我想知道是否可以只安装master而没有worker。在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
是否真的是master节点:
# 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
污点,表明它确实是主节点。
我正在尝试使用 kubespray 安装 kubernetes。
我已经成功配置master和worker,但是我想知道是否可以只安装master而没有worker。在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
是否真的是master节点:
# 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
污点,表明它确实是主节点。