vlambda博客
学习文章列表

k8s系列-08-kubespray的安装配置


主旨

既然选择使用kubespray的方式来部署k8s集群,那么我们首先要搞明白kubespray如何安装和配置,以及这些配置是如何生成的吧,要明白这些之后,后面的才好理解。
PS:在k8s系列中,推荐使用root用户来进行相关操作,否则的话会经常有权限性的问题,不太友好。

配置免密
在随意一台服务器上操作就行,我这里使用node-1节点来操作,仅在一台服务器上执行即可哈。
# 一路回车下去,什么信息都不用输入[root@node-1 ~]# ssh-keygen# 查看生成的pubkey,并复制下来,以供后面使用[root@node-1 ~]# cat /root/.ssh/id_rsa.pubssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbdPY3FRjOrIgUmNUm71tQ6PoEc1qF6FHakITd+Ig/luEO3sWMWN/XpfEQY76effltPzQZ8OS7KI6uPg5qgtfFNOJjWE1JkeF55DYzBckYtJk98j05Hf+guP/FeKpZ8bWpQhonp0sAslw2N6SNQU56WIsFSTY8/QPXhOJ5/7djORY80mh6R7Xj8EZRMHw8TyRsYsJM1vNAYypUT+hHBuuP01TiI+Me7O2h0AyPjQxvwYcVQG7xca5gTS/xc+3RYswveS5FkY9ctvKiLyyyxs/uHt7RYlTMYt8d+6wDqo4gxBnsBDaylB9f1LYibyI+sqdGGztAQdm3eVy7aFUCEbjn root@node-1[root@node-1 ~]#


该操作需要在每一台服务器上操作,包括上面的node-1节点:
# node-1[root@node-1 ~]# mkdir -p /root/.ssh[root@node-1 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbdPY3FRjOrIgUmNUm71tQ6PoEc1qF6FHakITd+Ig/luEO3sWMWN/XpfEQY76effltPzQZ8OS7KI6uPg5qgtfFNOJjWE1JkeF55DYzBckYtJk98j05Hf+guP/FeKpZ8bWpQhonp0sAslw2N6SNQU56WIsFSTY8/QPXhOJ5/7djORY80mh6R7Xj8EZRMHw8TyRsYsJM1vNAYypUT+hHBuuP01TiI+Me7O2h0AyPjQxvwYcVQG7xca5gTS/xc+3RYswveS5FkY9ctvKiLyyyxs/uHt7RYlTMYt8d+6wDqo4gxBnsBDaylB9f1LYibyI+sqdGGztAQdm3eVy7aFUCEbjn root@node-1" >> /root/.ssh/authorized_keys
# node-2[root@node-2 ~]# mkdir -p /root/.ssh[root@node-2 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbdPY3FRjOrIgUmNUm71tQ6PoEc1qF6FHakITd+Ig/luEO3sWMWN/XpfEQY76effltPzQZ8OS7KI6uPg5qgtfFNOJjWE1JkeF55DYzBckYtJk98j05Hf+guP/FeKpZ8bWpQhonp0sAslw2N6SNQU56WIsFSTY8/QPXhOJ5/7djORY80mh6R7Xj8EZRMHw8TyRsYsJM1vNAYypUT+hHBuuP01TiI+Me7O2h0AyPjQxvwYcVQG7xca5gTS/xc+3RYswveS5FkY9ctvKiLyyyxs/uHt7RYlTMYt8d+6wDqo4gxBnsBDaylB9f1LYibyI+sqdGGztAQdm3eVy7aFUCEbjn root@node-1" >> /root/.ssh/authorized_keys
# node-3[root@node-3 ~]# mkdir -p /root/.ssh[root@node-3 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbdPY3FRjOrIgUmNUm71tQ6PoEc1qF6FHakITd+Ig/luEO3sWMWN/XpfEQY76effltPzQZ8OS7KI6uPg5qgtfFNOJjWE1JkeF55DYzBckYtJk98j05Hf+guP/FeKpZ8bWpQhonp0sAslw2N6SNQU56WIsFSTY8/QPXhOJ5/7djORY80mh6R7Xj8EZRMHw8TyRsYsJM1vNAYypUT+hHBuuP01TiI+Me7O2h0AyPjQxvwYcVQG7xca5gTS/xc+3RYswveS5FkY9ctvKiLyyyxs/uHt7RYlTMYt8d+6wDqo4gxBnsBDaylB9f1LYibyI+sqdGGztAQdm3eVy7aFUCEbjn root@node-1" >> /root/.ssh/authorized_keys


验证一下,从node-1节点,分别登录三台服务器,看下是否需要输入密码,如果不需要输入密码的话,就成功了。
[root@node-1 ~]# ssh [email protected]Last login: Thu Mar 10 11:16:21 2022 from node-1[root@node-1 ~]# exit登出Connection to 192.168.112.130 closed.[root@node-1 ~]# ssh [email protected]Last login: Thu Mar 10 11:17:45 2022 from 192.168.112.130[root@node-2 ~]# exit登出Connection to 192.168.112.131 closed.[root@node-1 ~]# ssh [email protected]Last login: Thu Mar 10 11:17:40 2022 from 192.168.112.130[root@node-3 ~]# exit登出Connection to 192.168.112.132 closed.[root@node-1 ~]#
有同学会发现需要让你输入yes,其实是只有第一次需要,后面就都不需要了。


依赖解决

该步骤只需要在node-1上执行。
# 安装基础[root@node-1 ~]# yum install -y epel-release python36 python36-pip git# 下载kubespray源码[root@node-1 ~]# wget https://github.com/kubernetes-sigs/kubespray/archive/v2.15.0.tar.gz# 解压缩[root@node-1 ~]# tar xf v2.15.0.tar.gz [root@node-1 ~]# cd kubespray-2.15.0/[root@node-1 kubespray-2.15.0]# # 安装所需插件[root@node-1 kubespray-2.15.0]# pip3.6 install setuptools_rust[root@node-1 kubespray-2.15.0]# pip3.6 install --upgrade pip[root@node-1 kubespray-2.15.0]# cat requirements.txt ansible==2.9.16jinja2==2.11.1netaddr==0.7.19pbr==5.4.4jmespath==0.9.5ruamel.yaml==0.16.10[root@node-1 kubespray-2.15.0]# pip3.6 install -r requirements.txt


生成配置

该步骤只需要在node-1上执行。
# 拷贝一份集群配置示例,以供我们自己使用[root@node-1 kubespray-2.15.0]# cp -rpf inventory/sample inventory/mycluster
# 环境变量配置[root@node-1 kubespray-2.15.0]# export USE_REAL_HOSTNAME=true[root@node-1 kubespray-2.15.0]# export CONFIG_FILE=inventory/mycluster/hosts.yaml# 这里的IP地址一定要写成自己集群的IP地址哈,有几台就写几个[root@node-1 kubespray-2.15.0]# declare -a IPS=(192.168.112.130 192.168.112.131 192.168.112.132)
# 生成配置文件,此处使用的是k8s提供的脚本来生成配置文件[root@node-1 kubespray-2.15.0]# python3.6 contrib/inventory_builder/inventory.py ${IPS[@]}


个性化配置

该步骤只需要在node-1上执行。
1、节点组织配置
[root@node-1 kubespray-2.15.0]# vim inventory/mycluster/hosts.yaml all: hosts: node-1: ansible_host: 192.168.112.130 ip: 192.168.112.130 access_ip: 192.168.112.130 node-2: ansible_host: 192.168.112.131 ip: 192.168.112.131 access_ip: 192.168.112.131 node-3: ansible_host: 192.168.112.132 ip: 192.168.112.132 access_ip: 192.168.112.132 children: kube-master: hosts: node-1: node-2: kube-node: hosts: node-1: node-2: node-3: etcd: hosts: node-1: node-2: node-3: k8s-cluster: children: kube-master: kube-node: calico-rr:      hosts: {}
在里面可以调整节点组织信息,如果有问题可以直接修改。


2、containerd配置
[root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/all/containerd.yml
一般不需要修改,如果有定制化,可以自行更改。

3、全局配置
[root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/all/all.yml # 这是一个总的全局配置文件,这里不一一介绍里面可以修改什么内容,举几个例子吧# etcd的工作目录# 相关端口号# 代理地址 等都可以在这里进行修改


由于kubespary是国外的服务,所以他下载的时候也需要访问“外网”,需要“翻墙”出去,当然了,也可以使用国内源,为了方便,我这里直接配置了国外的地址,如果有同学需要配置国内源的需求,或者说也想翻出去,但是没有什么渠道,可以后台留言,咱们后面可以单独针对这两个内容再来唠一唠。
# 修改代理地址[root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/all/all.yml # 找到以下两行,取消注释,然后写上自己的代理地址,别用我的哈,我的是内网,你连不上http_proxy: "http://192.168.112.100"https_proxy"http://192.168.112.100"[root@node-1 kubespray-2.15.0]#


4、k8s集群配置调整
[root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml # 修改master节点的IP地址池kube_service_addresses: 10.200.0.0/16# 修改worker节点的IP地址池kube_pods_subnet: 10.233.0.0/16# 修改底层容器,由docker咱们改成containerdcontainer_manager: containerd[root@node-1 kubespray-2.15.0]#
其他的一些,比如网络插件使用calico等东西,可以根据自行需要去调整,这里就不一一列举了。


5、修改etcd的部署类型
[root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/etcd.yml etcd_deployment_type: host[root@node-1 kubespray-2.15.0]#
为什么要修改这个部署类型呢,因为他默认的是按照docker来安装的,但是我们上一步把容器改成了containerd,就没有docker了,所以需要修改成host模式。

6、附加组件
[root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/k8s-cluster/addons.yml # 代理,默认是falseingress_nginx_enabled: true# 界面(可选),这里是默认注释的状态,取消注释即可dashboard_enabled: true


至此,本文结束,kubespray部署前的准备工作就完事儿了,下一篇我们就直接来进行安装即可,以上内容操作过程中有问题的话,后台留言即可。


往期推荐

 


添加关注,带你高效运维