2018年6月11日 星期一

k8s 初探

架設環境是在 aws ec2 ubuntu 16.04 環境下,大致上照這篇進行
使用的範例則是這本書第一章的 hello world

依該篇文章進行時,初步遇到以下問題需排除:

1. 如果自行安裝 docker-ce 可能會遇到一些問題,使用 ubuntu 內建的 docker.io 會比較順利

2. kubeadm init 時,會使用預設的 cni 網路環境,可能會造成預設相關的 pod 會無法啟動 (Pending),可以依照這篇修改 10-kubeadm.conf ,將 KUBELET_NETWORK_ARGS 給 mark 掉,再執行 kubeadm init

3. 在 deploy pod network 時,該篇文章使用 flannel 網路環境,但是預設環境下產生的 flannel pod 會 Pending。或許可以照這篇做排除,不過還沒嘗試。我是依另一篇文章設定使用 weave 網路環境
sudo kubectl apply --filename https://git.io/weave-kube-1.6

4. 在 aws ec2 上使用的是免費方案等級的 instance,因此在產生範例的 pod 時,會因為 k8s 判斷硬體資源不足而讓 pod 變成 Pending。可以用以下指令讓 k8s 放行:
kubectl taint nodes --all node-role.kubernetes.io/master-


主要是遇到以上問題,就這樣也花了一天時間,才把書上的範例跑起來。
如果對 k8s 裡的元件定義有先弄清楚的話,例如 node rc pod service ,整個流程會比較清楚。我是邊做邊看,有些東西試了一陣子才發現是自己沒看清楚元件的定義或用途。

其他就是熟悉一下 k8s 指令,其實主要也就 kubectl 這個指令。
最常用的幾個 kubectl command 就是
kubectl get [nodes | pods | services ]
kubectl describe [resouce name]
kubectl create -f [filename]
kubectl delete [resource name]

禮拜四要去參加一場 k8s 研討會,希望在那之前能把 k8s 摸熟一點  QQ