镜像仓库:
安装软件:docker、docker-compose、harbor、nginx
1.下载cfssl、cfssljson、cfssl-certinfo,增加执行权限并放在PATH环境变量路径
2.编辑ca-csr.json文件,初始化ca以生成ca证书和ca证书私钥
3.编辑ca-conf.json文件,用于为其他组件生产证书做准备
4.编辑/etc/docker/daemon.json文件,指定insecure-registries、bip等参数
5.编辑harbor.yml文件,指定hostname、port、data_volume、location配置
6.执行install.sh安装harbor
7.编辑/etc/nginx/conf.d/harbor.conf,配置虚拟主机反向代理harbor
8.拉取nginx镜像推送到harbor私有仓库
9.拉取pause镜像推送到harbor私有仓库
10.拉取coredns镜像推送到harbor私有仓库
11.拉取traefik镜像推送到harbor私有仓库
12.拉取kubernetes-dashboard-amd64镜像推送到harbor私有仓库
主控节点:
安装软件:supervisord、etcd、kube-apiserver、kube-controller-manager、kube-scheduler
创建目录:logs、certs、config
etcd安装
1.编辑etcd-peer-csr.json文件(peer类型 用于etcd集群内部通信)
2.生成etcd-peer证书
3.分发etcd-peer证书到etcd节点
4.创建etcd启动脚本指定集群参数和证书位置(ca.pem、etcd-peer.pem、etcd-peer-key.pem)
5.创建etcd用户
6.修改etcd相关目录的所有者和所属组为etcd
7.编辑/etc/supervisord.d/etcd-server.ini
8.服务托管supervisord启动etcd
apiserver安装
1.编辑client-csr.json文件(client类型 用于apiserver作为客户端与etcd通信)
2.生成client证书
3.编辑apiserver-csr.json(server类型 用于apiserver作为服务端和其它k8s组件通信 务必将vip添加到host列表)
4.生成apiserver证书
5.分发client证书和apiserver证书到master节点
6.编辑audit.yaml审计配置文件
7.创建apiserver启动脚本指定audit.yaml文件和集群参数及证书位置(ca.pem、ca-key.pem、client.pem、client-key.pem、apiserver.pem、apiserver-key.pem)
8.编辑/etc/supervisord.d/kube-apiserver.ini
9.服务托管supervisord启动apiserver
10.配置负载均衡节点nginx主机四层反向代理到主控节点的6443端口
11.配置负载均衡节点nginx主机keepalived服务(对外暴露统一的apiserver入口)
controller-manager安装
1.创建controller-manager启动脚本指定集群参数和http协议的本地回环8080端口和证书位置(ca.pem、ca-key.pem)
2.编辑/etc/supervisord.d/kube-controller-manager.ini
3.服务托管supervisord启动controller-manager
kube-scheduler安装
1.创建kube-scheduler启动脚本指定集群参数和http协议的本地回环8080端口
2.编辑/etc/supervisord.d/kube-scheduler.ini
3.服务托管supervisord启动kube-scheduler
运算节点:
安装软件:supervisord、docker、kubulet、kube-proxy、flannel
创建目录:logs、certs、config
kubelet安装
1.编辑kubelet-csr.json文件(server类型 用于kubelet作为服务端与和apiserver通信)
2.生成kubelet证书
3.分发kubelet证书到node节点
4.使用kubectl工具创建用户账户k8s-node的kubelet.kubeconfig配置文件(涉及证书ca.pem、client.pem、client-key.pem)
5.分发kubelet.kubeconfig到node节点
6.主控节点编辑k8s-node.yaml授权k8s-node用户绑定集群角色system:node
7.主控节点应用k8s-node.yaml创建clusterrolebinding
8.创建kubelet启动脚本指定kubeconfig文件和集群参数及证书位置(ca.pem、kubelet.pem、kubelet-key.pem)
9.编辑/etc/supervisord.d/kubelet.ini
10.服务托管supervisord启动kubelet
kube-proxy安装
1.编辑kube-proxy-client-csr.json文件(client类型 用户账户kube-proxy作为客户端与apiserver通信 CN指定为system:kube-proxy)
2.生成kube-proxy-client证书
3.分发kube-proxy-client证书到node节点
4.使用kubectl工具创建用户账户kube-proxy的kube-proxy.kubeconfig配置文件(涉及证书ca.pem、kube-proxy-client.pem、kube-proxy-client-key.pem)
5.分发kube-proxy.kubeconfig到node节点
6.加载ipvs模块
7.创建kube-proxy启动脚本指定集群参数和kubeconfig文件
8.编辑/etc/supervisord.d/kube-proxy.ini
9.服务托管supervisord启动kube-proxy
flannel安装
1.分发client证书到node节点(client类型 用于flannel和etcd通信)
2.编辑subnet.env文件指定子网信息
3.etcd节点使用设置/coreos.com/network/config指定flannel模型
4.创建flannel启动脚本指定集群参数和env文件和证书位置(ca.pem、client.pem、client-key.pem)
5.编辑/etc/supervisord.d/flannel.ini
6.服务托管supervisord启动flannel
coredns安装
1.配置coredns资源配置清单(rabc.yaml、configmap.yaml、deployment.yaml、service.yaml)
2.应用coredns资源配置清单
traefik安装
1.配置traefik资源配置清单(rabc.yaml、daemonset.yaml、service.yaml、ingress.yaml)
2.应用traefik资源配置清单
3.配置负载均衡节点nginx主机七层反向代理到node节点的81端口
dashboard安装
1.配置dashboard资源配置清单(rabc.yaml、deployment.yaml、service.yaml、ingress.yaml)
2.应用dashboard资源配置清单
3.验证集群并优化iptables规则
参考链接:https://www.yuque.com/duduniao/k8s/