一、部署环境
参考文章:透過官方 Ansible 部署 Kubernetes
说明:由于安装软件需要在外网下载,所以此文档暂只适合能使用外网环境的主机使用,即能访问:google 的主机
1、安装主机
本次部署采用exsi6.7虚拟机Centos7,配置情况如表:
IP Address | 主机 | CPU | 内存 |
---|---|---|---|
192.168.123.121 | master1 | 1 | 2G |
192.168.123.122 | node1 | 1 | 2G |
192.168.123.123 | node2 | 1 | 2G |
2、设置主机免密设置
设置节点名称和添加hosts:
分别在各个主机中修改/etc/hostname名称和/etc/hosts里添加节点信息。
#修改为master1
vim /etc/hostname
#添加节点信息
vim /etc/hosts
192.168.123.121 master1
192.168.123.122 node1
192.168.123.123 node2
添加免密设置
分别在各个主机添加密钥对:
ssh-keygen -t rsa
使用master1作为发布机,进行对其他主机免密设置:
ssh master1 "cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub
3、部署Kubernetes
配置安装环境,安装必要软件
yum install -y epel-release
yum install -y ansible python-netaddr git
下载Kubernetes官方Ansible Playbook代码
git clone "https://github.com/kubernetes/contrib.git"
cd contrib/ansible
配置Ansible Playbook
在inventory文件夹中新建hosts文件,并且加入以下内容:
[masters]
master1
[etcd:children]
masters
[nodes]
node[1:2]
使用Ansible检查节点是否连通:
ansible -i inventory/hosts all -m ping
master1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
node2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
node1 | SUCCESS => {
"changed": false,
"ping": "pong"
编辑inventory/group_vars/all.yml文件。修改以下内容如下:
source_type: packageManager
cluster_name: cluster.kairen
networking: flannel
cluster_logging: true
cluster_monitoring: true
kube_dash: true
dns_setup: true
dns_replicas: 1
修改roles/flannel/defaults/main.yaml文件,如下:
flannel_options: --iface=enp0s8
修改完成后,进入scripts目录,执行如下命令开始部署:
INVENTORY=../inventory/hosts ./deploy-cluster.sh
部署需要过一段时间,在部署的过程中ansible服务会陆续报出安装的过程,我们可以实时的了解到安装进行到具体哪一步。
安装结束后,就可以使用kubectl查看节点信息:
kubectl get nodes
NAME STATUS AGE
node1 Ready 41m
node2 Ready 41m
查看pod和svc的信息:
kubectl get svc --all-namespaces
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes 10.254.0.1 443/TCP 48m
kube-system elasticsearch-logging 10.254.195.56 9200/TCP 35m
kube-system heapster 10.254.184.180 80/TCP 35m
kube-system kibana-logging 10.254.154.10 5601/TCP 35m
kube-system kube-dns 10.254.0.10 53/UDP,53/TCP 35m
kube-system monitoring-grafana 10.254.192.97 80/TCP 35m
kube-system monitoring-influxdb 10.254.6.37 8083/TCP,8086/TCP 35m
Targeted runs
可以使用tag的方式指定只部署特定服务,比如:指定部署Etcd。
INVENTORY=../inventory/hosts ./deploy-cluster.sh --tags=etcd