服务器规划
IP | hostname | role |
---|---|---|
10.4.7.21 | hdss7-21 | master+node 主控+运算节点(etcd,apiserver,kubelet,Controller-manager,ingress,scheduler) |
10.4.7.22 | hdss7-22 | master+node 主控+运算节点(etcd,apiserver,kubelet,Controller-manager,ingress,scheduler) |
10.4.7.11 | hdss7-11 | 反向代理/bind9 |
10.4.7.12 | hdss7-12 | 反向代理/etcd |
10.4.7.200 | hdss7-200 | 运维主机/harbor(资源存放) |
准备工作
批量配置
在所有主机上执行命令关闭selinux和防火墙:
基础软件安装
bind9安装配置(DNS服务)
-
bind9用于K8S ingress调度时我们能够直接使用DNS解析。bind9安装在10.4.7.11服务器上:
-
named.conf
最终配置如下:使用
named-checkconf
命令检查bind9配置文件是否有错误,无输出则无报错。 -
编辑
/etc/named.rfc1912.zones
文件,配置主机域和业务域,主机域使用host.com
,业务域使用od.com
,在配置文件最后添加下面的内容: -
编辑
/var/named/host.com.zone
,内容如下: -
编辑
/var/named/od.com.zone
文件。内容如下:其中serial表示记录的时间,格式为当前日期加第一条记录:20211210+01;
TTL 600:表示IP包被路由器丢弃之前允许通过的最大网段数
10 minutes:过期时间
SOA:一个域权威记录的相关信息,后面有5组参数分别设定了该域相关部分
dnsadmin.od.com.:假邮箱
$ORIGIN:即下列域名自动补充od.com,如dns,外面看来是dns.od.com
-
再次执行
named-checkconf
检查配置文件,然后启动named
服务: -
使用dig命令检查主机域是否解析,:
-
将所有的虚拟机服务器和宿主机windows的VMnet8接口的DNS配置修改为10.4.7.11,修改后如果11机器关机,则会导致无法上网。
K8S配置准备
证书签发环境
为K8S做证书签发准备,这里使用CFSSL,CFSSL是CloudFlare开源的一款PKI/TLS工具,包含了一个命令行工具和一个用于签名验证且捆绑TLS证书的HTTP API服务;
在K8S中,集群证书分为三种类型:
- client certificate:客户端证书,例如etcdctl,etcd proxy,fleetctl,docker客户端;
- server certificate:服务端证书,客户端以此验证服务端身份,例如docker服务端,kube-apiserver;
- peer certificate:双向证书(既是server cert,又是client cert),用于etcd集群成员间通信。
etcd节点需要表示自己服务的server cert,也许要client cert与etcd集群其他节点交互,可以分别指定两个证书,也可以使用一个对等证书;
master节点需要表示apiserver服务的server cert,也需要client cert连接etcd集群,也可以使用对等证书;
kubectl,calico,kube-proxy只需要client cert,kubelet证书比较特殊,其由node节点的TLS BootStrap向apiserver请求,由master节点的controller-manager自动签发,包含一个client cert和一个server cert。
-
在200机器上,安装cfssl相关软件:
-
进入/opt/目录,创建目录和证书:
创建
ca-csr.json
文件,写入以下内容:使用cfssl命令生成ca证书:
安装docker
-
架构设计中,21,22机器是运算节点,所以在21,22,200这三台机器上安装docker,200机器后续作为docker仓库,docker安装命令如下:
-
在21,22,200机器上修改docker配置,创建
/data/docker
、/etc/docker
目录,写入配置文件/etc/docker/daemon.json
并启动docker:**Tips:**这里的
bip
配置,如果在21机器上,就是172.7.21.1,在22机器上就是172.7.22.1,这样配置是方便以后出问题时直接查找容器所在机器。 -
在200机器安装docker-compose:
harbor仓库部署
-
harbor仓库同样安装在200机器,下载harbor最新稳定包并解压到/opt/目录下:
-
将
harbor.yml.tmpl
文件更名为harbor.yml
,需要修改的原配置如下:修改后如下,其中https项的参数全部注释掉,需要https的,使用nginx反代配置ssl:
-
创建所需的目录,然后执行安装脚本:
-
harbor安装完成后,使用
yum install -y nginx
安装nginx,用来反向代理harbor,然后在/etc/nginx/conf.d/
目录下创建harbor.od.com.conf
配置文件,然后启动nginx,配置如下: -
在11机器解析harbor域名,编辑
/var/named/od.com.zone
,serial序号加1,同时增加habor A记录: -
浏览器访问harbor,登录之后创建一个名为public公开项目,默认账号如下:
-
200机器测试推送镜像到harbor仓库:
到此,harbor仓库部署成功。