本文是基于Ansible批量部署kubernetes集群环境 支持部署k8s环境:
ETCD集群
kube-master
kube-node
kube-dashboard
vmware-harbor仓库
工具包测试环境信息
环境
ip
ETCD1
192.168.1.201
ETCD2
192.168.1.202
ETCD3
192.168.1.203
KUBE-MASTER
192.168.1.201
KUBE-NODE1
192.168.1.204
KUBE-NODE2
192.168.1.205
KUBE-DASHBOARD
192.168.1.204
VMWARE-HARBOR
192.168.1.205
工具版本信息
工具
版本
备注
centos
7.4
7版本的系统对docker性能支持更好
Ansible
2.5.2
因有些语法较新,需要ansible大于2.4
kubernetes
1.9.2
当前官方最新版为1.10
docker
latest
-
etcd
v3.2.15
-
flannel
v0.10.0
-
heapster
1.5.3
-
grafana
v4.4.3
-
influxdb
v1.3.3
-
kube-dashboard
v1.8.3
-
vmware-harbor
v1.5.0
支持k8s集群部署和单机部署,支持ip和域名部署访问
Ansible工具包内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 [root@localhost ~]# tree k8s k8s ├── 01-kube-etcd-all.yml ├── 02-kube-master.yml ├── 03-kube-node.yml ├── 04-clean-kube-node.yml ├── 05-clean-kube-master-all.yml ├── 06-kube-dashboard.yml ├── 07-clean-kube-dashboard.yml ├── 08-vmware-harbor.yml ├── 09-clean-vmware-harbor.yml ├── epel-release-latest-7.noarch.rpm ├── hosts ├── pics │ ├── harbor.png │ └── kube-dashboard.png ├── python-babel-0.9.6-8.el7.noarch.rpm ├── README.md └── roles ├── ca │ ├── files │ │ ├── cfssl │ │ ├── cfssl-certinfo │ │ └── cfssljson │ ├── tasks │ │ └── main.yml │ └── templates │ ├── ca-config.json │ └── ca-csr.json ├── clean-dashboard │ └── tasks │ └── main.yml ├── clean-etcd │ └── tasks │ └── main.yml ├── clean-master │ └── tasks │ └── main.yml ├── clean-node │ └── tasks │ └── main.yml ├── clean-vmware-harbor │ └── tasks │ └── main.yml ├── common │ ├── files │ │ └── epel-release-latest-7.noarch.rpm │ ├── tasks │ │ └── main.yml │ └── templates │ ├── 20-nproc.conf │ └── limits.conf ├── docker │ ├── files │ │ ├── daemon.json │ │ ├── docker-ce.repo │ │ └── docker.service │ └── tasks │ └── main.yml ├── etcd │ ├── files │ │ └── etcd-v3.2.15-linux-amd64.tar.gz │ ├── tasks │ │ └── main.yml │ └── templates │ ├── etcd-csr.json.j2 │ └── etcd.service.j2 ├── flannel │ ├── files │ │ └── flannel-v0.10.0-linux-amd64.tar.gz │ ├── tasks │ │ └── main.yml │ └── templates │ ├── flanneld-csr.json │ └── flanneld.service.j2 ├── kube-client │ ├── files │ │ └── kubernetes-client-linux-amd64-v1.9.2.tar.gz │ ├── tasks │ │ └── main.yml │ └── templates │ └── admin-csr.json ├── kube-dashboard │ ├── files │ │ ├── heapster-1.5.3.tar.gz │ │ ├── heapster-amd64_v1.5.3.tar.gz │ │ ├── heapster-grafana-amd64_v4.4.3.tar.gz │ │ ├── heapster-influxdb-amd64_v1.3.3.tar.gz │ │ ├── kubernetes-dashboard-amd64_v1.8.3.tar.gz │ │ └── pod-infrastructure_v3.6.173.0.49.tar.gz │ ├── tasks │ │ └── main.yml │ └── templates │ └── kubernetes-dashboard.yaml ├── kube-master │ ├── files │ │ └── kubernetes-server-linux-amd64-v1.9.2.tar.gz │ ├── tasks │ │ └── main.yml │ └── templates │ ├── basic-auth.csv.j2 │ ├── kube-apiserver.service.j2 │ ├── kube-controller-manager.service.j2 │ ├── kubernetes-csr.json.j2 │ ├── kube-scheduler.service.j2 │ └── token.csv.j2 ├── kube-node │ ├── files │ │ ├── etcd │ │ ├── etcdctl │ │ ├── kubelet │ │ ├── kube-proxy │ │ └── README.txt │ ├── tasks │ │ └── main.yml │ └── templates │ ├── kubelet.service.j2 │ ├── kube-proxy-csr.json │ └── kube-proxy.service.j2 ├── prepare │ ├── files │ │ ├── cfssl │ │ ├── cfssl-certinfo │ │ ├── cfssljson │ │ ├── etcd │ │ └── etcdctl │ └── tasks │ └── main.yml └── vmware-harbor ├── files │ ├── csr │ ├── docker-ce.repo │ ├── docker-compose │ ├── docker.service │ └── harbor-offline-installer-v1.5.0.tgz ├── tasks │ └── main.yml └── templates ├── daemon.json.j2 ├── docker-compose.yml └── harbor.cfg.j2 55 directories, 84 files [root@localhost ~]#
工具包大小:1 2 3 [root@localhost ~]# du -sh k8s/ 2.1G k8s/ [root@localhost ~]#
工具包README 本ansible脚本测试执行环境为:centos 7.4,kubernetes v1.9.2 Author:Jack_wang Blog:http://www.yfshare.vip
准备工作
ansible当前服务器自己root互信
ansible服务器和其他所有各个节点root互信 命令: ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip
注:ansible需要使用2.4以上的版本,因有些语法2.4以下不支持. 当前ansible版本为2.5.2。
安装步骤 1 2 yum -y install https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm yum -y install ansible
注:这里安装ansible-2.5.2时,yum源里会缺少python-babel-0.9.6-8.el7.noarch.rpm包,可以在https://pkgs.org/download/python-babel 这里下载.在当前目录也提供了该依赖包. 按要求修改hosts文件相关参数 操作步骤:
ansible-playbook -i hosts 01-kube-etcd-all.yml #部署etcd
ansible-playbook -i hosts 02-kube-master.yml #部署kube-master
ansible-playbook -i hosts 03-kube-node.yml #部署kube-node
部署成功后,可执行以下命令,查看是否安装成功.1 2 3 kubectl get componentstatuses kubectl get csr kubectl get nodes
也可以安装POD测试 下面提供一个测试yml文件:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14 ports: - containerPort: 80
保存文件为nginx-deployment.yaml
执行安装POD命令,等待安装完成.1 kubectl apply -f nginx-deployment.yaml
卸载Kubernetes集群步骤 按要求修改hosts文件相关参数.
部署kube-dashboard 按要求修改hosts文件相关参数.1 ansible-playbook -i hosts 06-kube-dashboard.yml
安装完成后,访问https://ip:8443 打开kube-dashboard WEB页面。访问 http://ip:3000 打开Grafana WEB页面。 配置Grafana略.
卸载kube-dashboard 按要求修改hosts文件相关参数.1 ansible-playbook -i hosts 07-clean-kube-dashboard.yml
部署vmware-harbor docker仓库 按要求修改hosts文件相关参数.1 ansible-playbook -i hosts 08-vmware-harbor.yml
卸载vmware-harbor docker仓库 按要求修改hosts文件相关参数.1 ansible-playbook -i hosts 09-clean-vmware-harbor.yml
部署结果 1 2 3 4 5 6 7 8 [root@localhost ~]# kubectl get componentstatuses NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health" : "true" } etcd-1 Healthy {"health" : "true" } etcd-2 Healthy {"health" : "true" } [root@localhost ~]#
1 2 3 4 5 [root@localhost ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.1.204 Ready <none> 3h v1.9.2 192.168.1.205 Ready <none> 2m v1.9.2 [root@localhost ~]#
如想获取该Ansible工具包,请扫描下方微信支付宝付款二维码支持下作者(100元以上请备注获取Ansible部署TLS K8S工具包并留下联系方式),谢谢
遇到此工具包相关问题,可联系作者QQ:838554604
本作品采用知识共享署名 2.5 中国大陆许可协议 进行许可,欢迎转载,但转载请注明来自Jack Wang Blog ,并保持转载后文章内容的完整。本人保留所有版权相关权利。 本文出自”Jack Wang Blog”:http://www.yfshare.vip/2018/05/21/Ansible%E9%83%A8%E7%BD%B2TLS-K8S/