# docker kubeadm 筆記
kubeadm 的前置功作 注意: master 和 worker 都要 做的 動作!!!!:
master 的主機 cup 最少 要 2個
worker 的主機 cup 最少 要 1個
注意: master 和 worker 都要 做的 動作!!!!
照著輸入指令就行






# 2.master 要做的動作 (only master)

等待一陣子就會 return 1 個 join 的 指示給你
EX:

這個指令可以在worker 的主機上用 (注意:是在worker 上執行,不是master!!!!)
# 3.worker 要做的動作(only worker):
當 worker 裝好了 kubeadm 後
行用剛剛master return 的指令
加入 節點

有時可能有bug出現, 就 輸入(kubeadm reset ,再加入就沒事)
然後 worker 可以先不用管了
# 4.在master 上查看 worker 是否成功加入:

kubectl get nodes
node02 是master主機的名字 kubeadm init 後 生出來 的 master
worker worker主機的名字 ,(成功加入)
(這是master 的terminal ,名為node2 (改錯名字了,沒差))

(這是worker 的terminal ,名為worker)

# 5.在worker上一個新的docker container,新增1個pod
我利用上次 作業 放到 docker hub的 docker image

我們可以 寫1個 .yaml 檔(注意 yaml 縮排跟語法比python 還煩)

之後 建起來

再 查起來
kubectl get pods
確定 node 是worker , status 是runing ,成功

在worker 的主機 上查看 是否有 docker images
成功build了 ericacer/1052048-demo

再 把其放到 localhost:8080上測試

這邊再開1個 master 的terminal 來curl 看看

成功~
PS:UI 是長這樣的 (上次作業的圖,這次是用localhost來測試,所以沒辦法在server OS 上 顯示localhost:8080 介面)

# 6.設定可以讓worker上的某個container死掉後可以自動再啟動
我們可以 在寫 .yaml 時加 上
livenessProbe:
httpGet:
path: /
port: webapp-port
initialDelaySeconds: 15
periodSeconds: 15
timeoutSeconds: 30
successThreshold: 1
failureThreshold: 3

加上後:


可以看到Liveness那行,清楚看到目前 health check 的設定狀態。當 container 無法正常回應 health check 時,Kubernetes 就會視為該 container 失去功能並重啟。
# 7.途中遇到的問題與解決方法:
**A.**
當你使用kubectl 指令時 會有很多奇奇怪怪的bug出現
例如: kubectl get node 時會出現報錯
如:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
OR
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of “crypto/rsa: verification error” while trying to verify candidate authority certificate “kubernetes”)
解決方法 有3種:
1.kubeadm init 後 必順輸入以下, 且要先 remove 之 前的那個檔 ,sudo rm -rf $HOME/ .kube

2.再不行 就給個path

3.還是不行時 就暴力解決吧!
因為kubectl 的指令需要訪問admin.conf,所 以你要在你打指令的目錄也copy一個 admin.conf,這樣就解決很多 問題了
**B.**
kubectl get pods 查看state時
若過了很久還不是runing 的 state時
可以利用 kubectl describe pod 1052048-demo 查BUG

報錯就在最後一行
這邊的BUG 說你的worker 上沒有 這個檔

有時安裝不完整或 重裝後沒 完整的init就出現這問題 ,google 找subnet.env就有了, copy到worker 那邊就OK.
完!~