kubernetes - 使用 Kubespray 安装 kubernetes 时是否可以只安装 master?
问题描述
我正在尝试使用 kubespray 安装 kubernetes。
我已经成功配置了master和worker,但是我想知道是否只能安装没有worker的master。在inventory.ini
中,仅指定了 master 的主机名并继续安装,并显示以下失败消息。
有没有办法用 kubespray 只安装 master,不包括 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 文档中的某处是否涵盖了仅安装单个主节点。
我将创建一个简单的示例来说明它是如何工作的。
假设我有一个实例,我希望它成为 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
option。
# 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
污点,表明它确实是主节点。
推荐阅读
- python - 将字典的字符串表示形式转换为字典
- postgresql - 请在首选项对话框中配置 PostgreSQL 二进制路径
- flutter - Flutter 全局变量
- openiddict - 某些客户端的 Openiddict 回调错误 - 不是全部
- makefile - 如何避免枚举目标文件?
- python - Django allauth OSError: [Errno 99] 地址不可用
- azure-active-directory - 在 Azure OIDC 注销后,应该将什么内容安全策略标头值重定向回应用程序
- java - 如何在没有 PG 服务器和 Web 控制台的情况下启动 H2 数据库命令行?
- php - 基于帖子术语的 Wordpress 搜索
- django - 如何在 docker 中设置 celery beat?