Table of Contents
简介
本章节主要准备二进制安装k8s的过程中所使用到的证书配置文件,怎样生成证书,以及etcd、master端组件、worker端组件所用到的配置文件和启动脚本,同时利用脚本生成证书、和生成kubecofig配置文件。
一.准备证书相关的配置文件
1.1.ca-config.json
定义ca证书的过期时间
1.2.ca-csr.json
定义ca证书的加密算法、地域及组织单位
1.3.etcd-csr.json
定义etcd证书中的域名、IP、加密算法及组织单位,配置中的三个IP为安装etcd的IP,现在是将etcd安装在master的三个IP上,所以配置的是master的IP
1.4.kube-apiserver-csr.json
定义api-server证书中的域名、IP、加密算法及组织单位,配置中的IP主要是master的IP,以及配置api-server的vip,或调用api-server的域名
1.5.kube-controller-manager-csr.json
定义kube-controller-manager 证书中的api证书地址、节点IP、加密算法及组织单位,配置中的IP是kube-apiserver的vip,域名或127.0.0.1,主要是controller-manager一般都是和apiserver安装在同样的机器上
1.6.kube-scheduler-csr.json
定义kube-scheduler证书中的api证书地址、节点IP、加密算法及组织单位,配置中的IP是kube-apiserver的vip,域名或127.0.0.1,主要是controller-manager一般都是和apiserver安装在同样的机器上
1.7.admin-csr.json
该配置是用于生成k8s管理客户端kubectl所需的kubeconfig时需要公钥和私钥所必须的证书配置文件
1.8.proxy-client-csr.json
kube-apiserver 的另一种访问方式就是使用 kubectl proxy 来代理访问, 而该证书就是用来支持SSL代理访问的. 在该种访问模式下, 我们是以http的方式发起请求到代理服务的, 此时, 代理服务会将该请求发送给 kube-apiserver, 在此之前, 代理会将发送给 kube-apiserver 的请求头里加入证书信息
二.安装客户端相关软件及命令
该步骤主要是将部署过程中需要用的一些命令先进行安装,主要就是将以下二进制可执行命令拷贝到/usr/bin目录,该部分软件可以在其中一台master机器上进行安装,也可以在独立的机器上进行安装。
软件 | 用途 |
---|---|
cfssl,cfssl-certinfo,cfssljson | 用于生成安装所需的证书 |
cilium | 用于查看cilium的安装状及卸载cilium的客户端 |
helm | 用于安装charts的客户端,例如安装cilium,安装credn,安装ingress等 |
kubectl,kubectl-convert | k8s客户端软件,kubectl是管理k8s必需的的客户端软件 |
三.生成证书
将第一步所有的的配置文件放在csr-conf这样一个目录下,然后执行以下脚本生成证书
四.准备k8s配置文件
3.1.etcd.conf
10.16.120.81 的配置,每台机不一样
10.16.120.82 的配置,每台机不一样
10.16.120.83 的配置,每台机不一样
3.2.kube-apiserver.conf
注意配置中的文件、证书路径。需要修改的地方主要就是etcd的IP,配置中的pem证书文件是在“三.生成证书” 时生成的,其中的token.csv 会在“五.准备kubeconfig配置文件”中生成
3.3.kube-controller-manager.conf
注意配置中的文件、证书路径,以及service和pod的网段,kubeconfig会在“五.准备kubeconfig配置文件”中生成
3.4.kube-scheduler.conf
注意配置中的文件路径,kueconfig会在“五.准备kubeconfig配置文件”中生成
3.5.kubelet.yaml
其中10.1.0.2是安装conredns的IP,提前定义好次IP。/opt/kubernetes/ssl/ca.pem 为ca的证书路径,/run/systemd/resolve/resolv.conf为系统的resolved的dns配置路径,不配置此项会导致读取/etc/resolv.conf,而/etc/resolv.conf是/run/systemd/resolve/stub-resolv.conf的软连接,里面配置了本地缓存dns,127.0.0.1:53,会和k8s导致dns冲突
3.6.containerd配置文件
containerd的配置文件,需要在worker上安装好containerd时,然后再执行containerd命令导出默认配置,并修改里面的镜像地址,也可以解压containerd的安装包,拷贝containerd的执行文件出来执行导出配置文件。
五.生成kubeconfig配置文件
kubeconfig的配置文件在安装kube-control-manger,kube-schedul,kubelet,以及配置kubectl客户端时都需要用到。该脚本中所使用到的路径与“三.生成证书”中所使用的的路径一致,如果路径有变动,需要两个脚本都修改一下存放路径。
六.准备启动脚本
6.1.etcd.service
etcd的启动脚本
6.2.kube-apiserver.service
kube-apiserver的启动脚本
6.3.kube-controller-manager.service
kube-controller-manager的启动脚本
6.4.kube-scheduler.service
kube-scheduler的启动脚本
6.5.kubelet.service
worker端kubelet的启动脚本
6.6.containerd启动脚本
在安装containerd时,解压cri-containerd-1.7.16-linux-amd64.tar.gz,
tar zxvf cri-containerd-1.7.16-linux-amd64.tar.gz -C /
就会在/etc/systemd/system/containerd.service 路径下有启动脚本
七.总结
建议将以上文件生成后统一放到一个目录,例如放到install_k8s的目录,然后将下载的软件也放在此目录,将生成证书的脚本和生成kubeconfig的脚本放在install_k8s目录下,在生成证书、配置文件、启动脚本以后,方便后边的安装步骤找对应的文件。