1

我正在尝试使用 Ubuntu 16.04 OS 上的 kubespray 工具运行一个 Ansible 剧本来部署 Kubernetes 集群。我有一台安装了 Ansible 和克隆的 kubespray Git 存储库的基础机器。一个主节点和两个工作节点包含在集群中。

我的主机(更新)文件如下图所示,

[all]
MILDEVKUB020 ansible_ssh_host=MILDEVKUB020 ip=192.168.16.173 ansible_user=uName  ansible_ssh_pass=pwd
MILDEVKUB030 ansible_ssh_host=MILDEVKUB030 ip=192.168.16.176 ansible_user=uName  ansible_ssh_pass=pwd
MILDEVKUB040 ansible_ssh_host=MILDEVKUB040 ip=192.168.16.177 ansible_user=uName  ansible_ssh_pass=pwd

[kube-master]
MILDEVKUB020

[etcd]
MILDEVKUB020

[kube-node]
MILDEVKUB020
MILDEVKUB030
MILDEVKUB040

[k8s-cluster:children]
kube-master
kube-node

hosts.ini 文件的位置是 /inventory/sample。我正在尝试以下 Ansible 命令

sudo ansible-playbook -i inventory/sample/hosts.ini cluster.yml --user=uName --extra-vars "ansible_sudo_pass=pwd"

我正在使用以下链接中的剧本“cluster.yml”

https://github.com/kubernetes-sigs/kubespray/blob/master/cluster.yml

我的 /etc/hosts 包含条目的文件,

127.0.0.1 MILDEVDCR01.Milletech.us MILDEVDCR01
192.168.16.173 MILDEVKUB020.Milletech.us MILDEVKUB020
192.168.16.176 MILDEVKUB030.Milletech.us MILDEVKUB030
192.168.16.177 MILDEVKUB040.Milletech.us MILDEVKUB040

更新错误

TASK [adduser : User | Create User Group] 
Thursday 04 April 2019  11:34:55 -0400 (0:00:00.508)       0:00:33.383 ********
fatal: [MILDEVKUB040]: FAILED! => {"changed": false, "msg": "groupadd: Permission denied.\ngroupadd: cannot lock /etc/group; try again later.\n", "name": "kube-cert"}
fatal: [MILDEVKUB020]: FAILED! => {"changed": false, "msg": "groupadd: Permission denied.\ngroupadd: cannot lock /etc/group; try again later.\n", "name": "kube-cert"}
fatal: [MILDEVKUB030]: FAILED! => {"changed": false, "msg": "groupadd: Permission denied.\ngroupadd: cannot lock /etc/group; try again later.\n", "name": "kube-cert"}

即使我能够使用 ssh 从基础机器连接所有机器,我也会收到这样的错误。如何跟踪运行此命令以部署 Kubernetes 集群的问题?

4

4 回答 4

1

您可能需要指定 ssh 用户或密钥

  • 将用户名添加到库存中
ansible_ssh_user=<USERNAME>
  • 添加密码:
ansible_ssh_pass=<PASSWORD>

如果没有 - 共享正在工作的 ssh 命令。

于 2019-04-03T08:07:18.563 回答
1

如果您使用用户/密码组合登录。执行 ansible 的用户应该存在于 sudoers 文件中,以切换到 root 或其他特权用户

检查 sudoers 并尝试在目标服务器上手动执行 sudo su root

于 2019-04-03T17:58:43.413 回答
1

经过大量研究后,我发现在运行 ansible playbook 时需要输入参数“--ask-pass --become --ask-become-pass”。我尝试了以下命令,

sudo ansible-playbook -i inventory/sample/hosts.ini cluster.yml --user=docker --ask-pass --become --ask-become-pass

而且,在继续kubernetes集群部署的时候,又会出现库存名只能用小写字母的问题。所以我用小写主机名编辑了所有清单名称和 etc/hostname 和 /etc/hosts 。并将所有小写字母放入库存文件中。现在它的工作成功。

/etc/hosts 包含如下内容,

127.0.0.1 MILDEVDCR01.Milletech.us mildevdcr01
192.168.16.173 MILDEVKUB020.Milletech.us mildevkub020
192.168.16.176 MILDEVKUB030.Milletech.us mildevkub030
192.168.16.177 MILDEVKUB040.Milletech.us mildevkub040

等/主机名

mildevdcr01

和 hosts.ini 文件如下,

[all]
mildevkub020 ansible_ssh_host=mildevkub020 ip=192.168.16.173 ansible_user=uName  
ansible_ssh_pass=pwd
mildevkub030 ansible_ssh_host=mildevkub030 ip=192.168.16.176 ansible_user=uName  
ansible_ssh_pass=pwd
mildevkub040 ansible_ssh_host=mildevkub040 ip=192.168.16.177 ansible_user=uName  
ansible_ssh_pass=pwd

[kube-master]
mildevkub020

[etcd]
mildevkub020

[kube-node]
mildevkub020
mildevkub030
mildevkub040

[k8s-cluster:children]
kube-master
kube-node

如果我们这样做,我们将在目标主机上获得部署的 Kubernetes 集群。

于 2019-04-05T15:45:13.513 回答
0

如果您删除了密码,那么 ssh 连接现在应该可以了。更改后您是否更新了远程主机上的 ssh 密钥?

于 2019-04-03T12:12:10.667 回答