1. 程式人生 > >二進位制方式搭建極簡kubernetes1.10環境@centos7.3_Kubernetes中文社群

二進位制方式搭建極簡kubernetes1.10環境@centos7.3_Kubernetes中文社群

第1章  環境概述

環境介紹:

OS:Linux CentOS 7.3  3.10.0-514.el7.x86_64

Master  IP:192.168.100.50

元件 版本 部署方式 安裝目錄或訪問入口
etcd 3.3.2 二進位制 /usr/local/kubernetes/bin/etcd
docker 18.03.0-ce 二進位制 /usr/bin/docker
flannel 0.10.0 二進位制 /usr/local/kubernetes/bin/flanneld
kubernetes 1.10.0 二進位制 /usr/local/kubernetes/bin
kube-apiserver、kube-controller-manager、kubectl、kube-proxy、kube-scheduler

Node IP:192.168.100.51/52

元件 版本 部署方式 安裝目錄或訪問入口
etcd 3.3.2 二進位制 /usr/local/kubernetes/bin/etcd
docker 18.03.0-ce 二進位制 /usr/bin/docker
flannel 0.10.0 二進位制 /usr/local/kubernetes/bin/flanneld
kubernetes 1.10.0 二進位制 /usr/local/kubernetes/bin
Kubectl、kubelet、kube-proxy

第2章  部署ETCD

Etcd需要在3臺主機上都安裝。

1、注意編輯install_etcd.sh指令碼中ifconfig獲取本機ip地址的命令,按照實際情況進行修改以正確過濾獲得主機IP

2、在3臺主機上分別執行如下命令

./install_etcd.sh etcd01 etcd01=http://192.168.100.50:2380,etcd02=http://192.168.100.51:2380,etcd03=http://192.168.100.52:2380

./install_etcd.sh etcd02 etcd01=http://192.168.100.50:2380,etcd02=http://192.168.100.51:2380,etcd03=http://192.168.100.52:2380

./install_etcd.sh etcd03 etcd01=http://192.168.100.50:2380,etcd02=http://192.168.100.51:2380,etcd03=http://192.168.100.52:2380

注意:執行上述命令時,不能等一臺完全執行成功了再去下一臺執行,因為etcd啟動後會進行選舉leader投票,如果各etcd啟動間隔過大,會導致etcd叢集啟動失敗。

3、確認

#etcdctl member list
b12108f5c8234dfb: name=etcd02 peerURLs=http://192.168.100.51:2380 clientURLs=http://192.168.100.51:2379 isLeader=false
d5b914ca14c97aed: name=etcd03 peerURLs=http://192.168.100.52:2380 clientURLs=http://192.168.100.52:2379 isLeader=true
fc3d5384c4e24956: name=etcd01 peerURLs=http://192.168.100.50:2380 clientURLs=http://192.168.100.50:2379 isLeader=false

第3章  安裝Flannel

Flannel需要在所有主機上安裝。

1、編輯install_flannel.sh指令碼設定正確的網絡卡介面及etcd鍵值

2、在3臺主機上分別執行下面命令

./install_flannel.sh  http://192.168.100.50:2379,http://192.168.100.51:2379,http://192.168.100.52:2379

3、確認

# ifconfig flannel.1
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
inet 172.18.64.0 netmask 255.255.255.255 broadcast 0.0.0.0
ether 2e:ff:72:f0:0f:a8 txqueuelen 0 (Ethernet)
RX packets 828 bytes 80054 (78.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 876 bytes 71341 (69.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

第4章  部署Docker

Docker需要在所有主機上安裝。

此次docker部署採用二進位制安裝方式進行。

1、編輯 install-docker.sh

在二進位制安裝指令碼中新增flannel引數

2、執行安裝指令碼

./install-docker.sh  docker-18.03.0-ce.tgz

3、確認

# docker version
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.2
Git commit: 0520e24
Built: Wed Mar 21 23:05:52 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.03.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:14:54 2018
OS/Arch: linux/amd64
Experimental: false

第5章  部署Kubernetes

1、部署Master節點

在192.168.100.50主機上執行下面命令

./install_k8s_master.sh 192.168.100.50 http://192.168.100.50:2379,http://192.168.100.51:2379,http://192.168.100.52:2379

2、部署Minion節點

在51和52主機上執行下面命令

./install_k8s_node.sh 192.168.100.50

3、確認叢集狀態

# kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
etcd-2 Healthy {“health”:”true”}
etcd-0 Healthy {“health”:”true”}
etcd-1 Healthy {“health”:”true”}
controller-manager Healthy ok

# kubectl get nodes
NAME STATUS ROLES AGE VERSION
webgate2 Ready <none> 1d v1.10.0
webgate3 Ready <none> 1d v1.10.0

至此,一個簡單的kubernetes叢集就搭建完成了。

第6章  部署Busybox容器

1、準備容器映象

因為實驗環境無法連外網,也沒有構建registry,所以只能使用node上的本地映象來跑容器。要把busybox容器跑起來,除了要有busybox映象外,還需要pause映象。

映象使用上傳tar檔案用docker load的方式在每臺node匯入。

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox 1.0 8ac48589692a 7 weeks ago 1.15MB
busybox latest 8ac48589692a 7 weeks ago 1.15MB
gcr.io/google_containers/kubernetes-dashboard-amd64 v1.8.3 0c60bcf89900 3 months ago 102MB
gcr.io/google_containers/k8s-dns-sidecar-amd64 1.14.7 db76ee297b85 7 months ago 42MB
gcr.io/google_containers/k8s-dns-kube-dns-amd64 1.14.7 5d049a8c4eec 7 months ago 50.3MB
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 1.14.7 5feec37454f4 7 months ago 41MB
gcr.io/google_containers/pause-amd64 3.0 99e59f495ffa 2 years ago 747kB

上面images包含下一節用到的dns和dashboard映象。

2、編寫busybox_rc.yaml

具體內容見本文對應介質包內檔案內容。

3、執行rc

./ kubectl create -f /root/busybox-rc.yaml

4、確認

docker exec -it {容器ID} sh進入其中一個容器,執行命令進行驗證。

下面再部署下kube-dns和DashBoard服務。

第7章  部署kube-dns和DashBoard服務

1、部署kube-dns服務

Kube-dns作為叢集內部的域名解析服務,沒有它就只能使用ip地址來相互訪問。

注意修改kube-dns.yaml中的clusterIP地址和kube-master-url地址。

執行命令:kubectl create -f kube-dns.yaml,部署啟動kube-dns服務。

注意使用的是kube-dns1.14.7版本映象,1.14.1映象在docker ce 18.03下跑不起來。映象也要手工load到本地。

2、部署DashBoard服務

注意修改kubernetes-dashboard.yaml中的API server地址和開放的Node port。

執行命令:kubectl create -f kubernetes-dashboard.yaml,部署啟動dashboard服務。

使用get pods命令找出pod執行的node,使用http://{NodeIP}:30090訪問即可。

注意:映象也要手工load到本地。

3、確認

# kubectl get pods -o wide –namespace kube-system
NAME READY STATUS RESTARTS AGE IP NODE
kube-dns-6fbf8d6694-5bxxh 3/3 Running 0 12d 172.18.90.2 webgate2
kubernetes-dashboard-dbd4c76f-wq8sd 1/1 Running 0 12d 172.18.64.2 webgate3

文章對應的安裝介質及映象下載地址:

連結: https://pan.baidu.com/s/17KDR-XxvbUu8Bamjwqbs-w 密碼: c3ns