1. 程式人生 > >Kubernetes 1 3 從入門到進階 安裝篇(2)

Kubernetes 1 3 從入門到進階 安裝篇(2)

pri http com block .com 整理 希望 over role

Kubernetes 1.3 從入門到進階 安裝篇: kubernetes-ansible

上一篇文章我們介紹了使用minikube快速部署kubernetes1.3到單機上. 多臺機器構成的集群,本次介紹kubernetes-ansible來進行安裝。ansible是自動化部署一大神器,接下來就讓我們來看看使用神器的效果吧。

構成說明

master和etcd共用一臺機器,只有一個minion的超級mini構成,只是為演示只用。

NotypeIPOS
1 master 192.168.32.31 CENTOS7.2
2 etcd 192.168.32.31 CENTOS7.2
3 minion 192.168.32.32 CENTOS7.2

Step 1:安裝ansible

在192.168.32.31上安裝ansible

[root@host31 local]# yum -y install epel-release
[root@host31 local]# yum -y install ansible
  • 1
  • 2

確認安裝

[root@host31 local]# ansible --version
ansible 2.1.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o
overrides [root@host31 local]#
  • 1
  • 2
  • 3
  • 4
  • 5

Step 2:設定ssh通路和ansible

分別在兩臺機器上生成ssh的key

[root@host31 ~]# ssh-keygen
[root@host32 ~]# ssh-keygen
  • 1
  • 2

設定2臺機器的/etc/hosts

[root@host31 ~]# grep host3 /etc/hosts
192.168.32.31 host31
192.168.32.32 host32
[root@host31 ~]#
[root@host32 ~]# grep host3 /etc/hosts
192.168
.32.31 host31 192.168.32.32 host32 [root@host32 ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在2臺機器上都作如下設定,保證ssh通路暢通

# ssh-copy-id -i host31
# ssh-copy-id -i host32
  • 1
  • 2

在ansible所安裝的機器上,追加機器信息到/etc/ansible/hosts中

[root@host31 ansible]# grep host3 /etc/ansible/hosts
host31
host32
[root@host31 ansible]#
  • 1
  • 2
  • 3
  • 4

確認ansible正常動作

[root@host31 ~]# ansible localhost -m ping
localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
[root@host31 ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Step 3:下載contrib

contrib裏面有kubernets生態中很多有用的組件,但不屬於kubernetes的core的部分。首先我們使用git從https://github.com/kubernetes/contrib上clong下來整個contrib,而用來方便安裝的kubernetes-ansible,只是其中的一個部分:https://github.com/kubernetes/contrib/tree/master/ansible

[root@host31 local]# cd ..
[root@host31 /]# mkdir -p /local; cd /local
[root@host31 local]# git clone https://github.com/kubernetes/contrib.git
Cloning into ‘contrib‘...
remote: Counting objects: 27980, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 27980 (delta 13), reused 0 (delta 0), pack-reused 27940
Receiving objects: 100% (27980/27980), 30.05 MiB | 173.00 KiB/s, done.
Resolving deltas: 100% (13411/13411), done.
[root@host31 local]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Step 4:生成kubernetes-ansible設定文件

按照構成說明中的2臺機器構成,設定inventory文件

[root@host31 ansible]# pwd
/local/contrib/ansible
[root@host31 ansible]# ll
total 28
-rw-r--r--.  1 root root 1630 Jul 29 08:09 deploy-cluster.yml
drwxr-xr-x.  2 root root   20 Jul 29 08:09 group_vars
-rw-r--r--.  1 root root  115 Jul 29 08:09 inventory.example.ha
-rw-r--r--.  1 root root  156 Jul 29 08:09 inventory.example.single_master
drwxr-xr-x.  3 root root   18 Jul 29 08:09 playbooks
-rw-r--r--.  1 root root 2207 Jul 29 08:09 README.md
drwxr-xr-x. 15 root root 4096 Jul 29 08:09 roles
-rwxr-xr-x.  1 root root  711 Jul 29 08:09 setup.sh
drwxr-xr-x.  2 root root 4096 Jul 29 08:09 vagrant
[root@host31 ansible]# cp inventory.example.ha inventory
[root@host31 ansible]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

將inventory文件的內容設定為如下

[root@host31 ansible]# cat inventory

[masters]
host31

[etcd:children]
host31

[nodes]
host32
[root@host31 ansible]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Step 6:安裝所需package

依賴關系整理的真不錯,只有一個package在github的說明中雖然沒有提到,但是實際是需要提前安裝的

Nopackage機器安裝命令
1 python-netaddr 192.168.32.31 yum -y install python-netaddr

Step 7:執行安裝文件

執行安裝文件setup.sh

[root@host31 ansible]# pwd
/local/contrib/ansible
[root@host31 ansible]# ./setup.sh
  • 1
  • 2
  • 3

Step 8:確認kubernetes

確認node

[root@host31 ansible]# kubectl get nodes
NAME      STATUS    AGE
host31    Ready     1m
host32    Ready     1m
[root@host31 ansible]#
  • 1
  • 2
  • 3
  • 4
  • 5

確認services

[root@host31 ansible]# kubectl get services
NAME         CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   10.254.0.1   <none>        443/TCP   12m
[root@host31 ansible]#
  • 1
  • 2
  • 3
  • 4

確認版本

[root@host31 ansible]# kubectl version
Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"a4463d9a1accc9c61ae90ce5d314e248f16b9f05", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"a4463d9a1accc9c61ae90ce5d314e248f16b9f05", GitTreeState:"clean"}
[root@host31 ansible]#
  • 1
  • 2
  • 3
  • 4

吐槽: 居然是1.2,再到github上仔細一看,四個月沒有更新了。是要放棄kubernetes-ansible轉用minikube的意圖麽,對我們來說明明非常友好可用的東西,不像minikube有問題了的話只能眼巴巴地看著它那個go語言的二進制文件,眼睜睜的看著它取個版本信息都要聯一下google。對1.2和1.3之間區別不是特別在意的朋友,嚴重推薦此種方式進行安裝,甚至生產環境或者測試環境也完全可以在此基礎上進行定制和改進安裝與部署。

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

Kubernetes 1 3 從入門到進階 安裝篇(2)