我正在尝试运行一本用于在ubuntu 16.04 OS上使用kubespray工具部署kubernetes集群的手册。我有一台安装了ansible和克隆的kubespray git存储库的基本计算机。集群中包含一个主节点和两个工作节点。
我的主机(已更新)文件,例如followig屏幕截图,
[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集群的问题吗?
答案 0 :(得分:1)
您可能需要指定ssh用户或密钥
ansible_ssh_user=<USERNAME>
ansible_ssh_pass=<PASSWORD>
如果没有,请共享有效的ssh命令。
答案 1 :(得分:1)
如果您使用用户名/密码组合登录。与ansible一起执行的用户应该出现在sudoers文件中,以切换到root或其他特权用户
检查sudoers并尝试在目标服务器上手动执行sudo su root
答案 2 :(得分:1)
尝试了大量研究后,我发现在运行ansible剧本时需要放置参数“ --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集群部署时,将再次出现库存名称仅需使用小写字母的问题。因此,我用小写的hostname编辑了所有清单名称和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
etc / hostname
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集群。
谢谢大家对我的回应。您的帮助对我来说非常有用。谢谢。
答案 3 :(得分:0)
如果删除了密码短语,则ssh连接现在应该可以了。 更改后,您是否在远程主机上更新了ssh密钥?