利用Kubespray安装生产环境的k8s集群 - 排错
Ansible 排错
- Ansible 安装后需要加入到PATH,以便能够直接运行。 一般用非root用户运行,注意在playbook或者inventory里要显性定义become属性。 最好采用ansible运行账号可以免密码sudo的模式。
- Ansible 的配置文件,在kuberspray安装时已经存在,需要将Ansible运行配置文件指向相应位置。配置文件约定了Ansible运行时需要的各类依赖的位置,非常重要。
可通过运行 ansible --version 查看ansible的各类配置情况
以下代码可以看到ansible尚未绑定任何配置文件。
bill@jump-server:~/kubespray/playbooks$ ansible --version
ansible [core 2.16.14]
config file = None # 未绑定默认配置文件
configured module search path = ['/home/bill/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /home/bill/.local/lib/python3.11/site-packages/ansible
ansible collection location = /home/bill/.ansible/collections:/usr/share/ansible/collections
executable location = /home/bill/.local/bin/ansible
python version = 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] (/usr/bin/python3)
jinja version = 3.1.2
libyaml = True
两种(二选一 Alternative)临时定义实现配置文件绑定:
export ANSIBLE_CONFIG=/home/bill/kubespray/ansible.cf # 方法1 定义系统变量
ansible-playbook -i ../inventory/mycluster/inventory.ini -c /home/bill/kubespray/ansible.cf cluster.yml # 方法2, 每次运行ansible时 用 -c 去显性指定
- Ansbile 是可以反复执行同一个playbook,如果上一次执行时有任务失败有任务成功,ansible会从新执行失败的任务,并掠过成功的任务,然后记录每次执行成功和失败 已经未变动的TASK情况。
Kubernets 排错
用一条ansible 命令去执行cluster.yml 这一个playbook,即完成了整个kubernets集群的安装。然后你就可以ssh到各个node 去验收了。
我自己装完后几乎没发现大的问题。 小问题倒是有几个。
- admin.conf 配置文件没有和kubectl绑定,导致第一次运行kubectl报错。只有定义好kubectl执行的config文件即可。
- 3台master node上,都是在127.0.0.1:6443监听和暴露Kubernets API server的,这样显然无法提供api server