K8S 環境建置

2018-06-12
學習筆記

環境準備

準備3台VM當作master和node

圖為ubuntu1(master)、ubuntu2(node1)、ubuntu3(node2)

1



2



3







安裝Docker

更新ubuntu



1
apt-get update



4



5



6







在三台VM上安裝docker.io

1
apt-get install –y docker.io

7

8

9

安裝Kubeadm, kubelet, kubectl

三台VM上皆執行以下指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apt-get update && apt-get install -y apt-transport-https

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF

apt-get update

apt-get install -y kubelet kubeadm kubectl
```

<br />
# **關閉SWAP**
在三台VM上執行關閉swap指令<br />
`swapoff –a`



# **Initial master**
僅在Master上執行
```linux
kubeadm init --pod-network-cidr=10.244.0.0/16

10






Initial之後,會出現initial成功訊息,並顯示下列指令,請在Master上執行

1
2
3
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

11







Join node

Initial後出現的訊息中,會有一段key,請將這段指令複製起來,並貼在兩台node上執行

12


執行畫面如下

13

14

這樣Cluster就完成囉!!







安裝網路

在Master上輸入指令

1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

15

查看DNS狀態,剛開始dns還是pending狀態,等過一段時間後就會是running狀態囉

16


17




1
kubectl taint nodes --all node-role.kubernetes.io/master

若要將master設定為可佈署的node,可以執行這行指令

18

網路安裝完成







測試叢集

Run 一個nginx看看~~

建立nginx pod

1
kubectl run my-nginx --image=nginx --replicas=2 --port=80

19




1
kubectl get pods

剛開始的狀態還是ContainerCreating

20

等一段時間後,就都會是Running狀態囉

21




1
kubectl get deployment

在get deployment上也可以看到nginx

22




產生IP可供外連

1
kubectl expose deployment my-nginx --port=80 --type=NodePort




1
kubectl get services

23

也可將後面的type改成LoadBalancer




用本機的IP & 30223 Port連nginx頁面

24

25

佈署Nginx成功~~


K8S倒回指定版本

先將目前K8S環境reset

1
kubeadm reset



k8suninstall01

移除kubeadm、kubelet

1
apt-get remove kubeadm kubelet

k8suninstall02



執行autoremove避免殘留

1
sudo apt autoremove

k8suninstall03



下載指定版本的kubeadm、kubelet
若想知道可下載的版本列表,請輸入以下指令

1
apt-cache madison kubeadm

這邊以1.10.5-00為例

1
apt-get install kubeadm=1.10.5-00 kubelet=1.10.5-00

k8suninstall04



接下來就可以輸入master的join key到你的node裡面囉!
k8suninstall05



指令補充

kubeadm reset 重設所有網路設定

kubectl cluster info 顯示叢集資訊

kubectl config view 查看kubeconfig的設定

kubectl logs 查看pod的log

kubectl exec 進入容器內下指令

kubectl top 查看CPU、記憶體