一、部署环境

参考文章:透過官方 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       <none>        443/TCP             48m
kube-system   elasticsearch-logging   10.254.195.56    <none>        9200/TCP            35m
kube-system   heapster                10.254.184.180   <none>        80/TCP              35m
kube-system   kibana-logging          10.254.154.10    <none>        5601/TCP            35m
kube-system   kube-dns                10.254.0.10      <none>        53/UDP,53/TCP       35m
kube-system   monitoring-grafana      10.254.192.97    <none>        80/TCP              35m
kube-system   monitoring-influxdb     10.254.6.37      <none>        8083/TCP,8086/TCP   35m

Targeted runs

可以使用tag的方式指定只部署特定服务,比如:指定部署Etcd。


INVENTORY=../inventory/hosts ./deploy-cluster.sh --tags=etcd