0
点赞
收藏
分享

微信扫一扫

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

往复随安_5bb5 2022-03-30 阅读 35

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


主旨

既然选择使用kubespray的方式来部署k8s集群,那么我们首先要搞明白kubespray如何安装和配置,以及这些配置是如何生成的吧,要明白这些之后,后面的才好理解。

PS:在k8s系列中,推荐使用root用户来进行相关操作,否则的话会经常有权限性的问题,不太友好。

配置免密​在随意一台服务器上操作就行,我这里使用node-1节点来操作,仅在一台服务器上执行即可哈。

# 一路回车下去,什么信息都不用输入
[root@node-1 ~]# ssh-keygen
# 查看生成的pubkey,并复制下来,以供后面使用
[root@node-1 ~]# cat /root/.ssh/id_rsa.pub
ssh-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 root@192.168.112.130
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 root@192.168.112.131
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 root@192.168.112.132
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.16
jinja2==2.11.1
netaddr==0.7.19
pbr==5.4.4
jmespath==0.9.5
ruamel.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咱们改成containerd
container_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: containerd
[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 
# 代理,默认是false
ingress_nginx_enabled: true
# 界面(可选),这里是默认注释的状态,取消注释即可
dashboard_enabled: true

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



举报

相关推荐

0 条评论