本文是基于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 ~] 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 ~] 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 ~] 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 ~] 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
本文出自”Jack Wang Blog”:http://www.yfshare.vip/2018/05/21/Ansible部署TLS-K8S/