更新
sudo apt-get update
關閉 swap space
swapoff -a
將 /swapfile 這一行註解起來(前方加上 '#' )
sudo vim /etc/fstab
為什麼要關閉 swap space ?
原因是 K8S 希望 POD 在執行的時候能貼近完全使用 CPU/記憶體 100% 的狀況,在 CPU/記憶體不足的情況下,Unix 系統預設會將記憶體內的資料搬移到 SWAP 做交換,
但是這種交換動作對於容器平台來說非常浪費效能,K8S 希望在 CPU/記憶體滿載的時候直接將 Node 視為滿載,並回報 Master 調度。所以才會有將 SWAP 關閉,避免交換造成效能浪費。
修改 hostname (optional)
sudo hostname <your-new-name>
增加 node 與 ip
sudo vim /etc/hosts
在檔案中增加:
IP_ADDRESS HOST_NAME_OF_NODE
範例
140.119.19.25 k0s 192.168.0.10 lanz 18.139.136.159 ip-172-31-18-25
安裝 docker 與 k8s
docker :
k8s :
更新 k8s config
sudo vim /etc/systemd/system/kubelet.service.d/XXXXXXX_CONFIG
加入以下設定:
Environment=”cgroup-driver=systemd/cgroup-driver=cgroupfs”
以下動作只在Control Plane上執行
一共有三步
- Init control plane
--pod-network-cidr
= ip of network interface- Specify range of IP addresses for the pod network.
- If set, the control plane will automatically allocate CIDRs for every node.
--apiserver-advertise-address
= ip of master- The IP address the API Server will advertise it's listening on. If not set the default network interface will be used.
sudo kubeadm init --pod-network-cidr=<ip-of-container-network-interface> --apiserver-advertise-address=<ip-address-of-master>
遇到 container runtime is not running 的 error 怎麼解?
sudo mv /etc/containerd/config.toml /root/config.toml.bak sudo systemctl restart containerd
- 依序輸入系統給的三個指令
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 將最後兩行指令存起來,之後 node 執行此指令即可加入此集群
- 試試看
- 檢查是否有
~/.kube/config
- 把 config 裡面的設定也都貼去 node 裡面的
~/.kube/config
- 剩下的我也不清楚了,網路一致是說需要檢查看看 .kube/config
- 後來研判應該是因為 config 檔案吃錯
範例:
kubeadm join 140.119.19.25:6443 --token jkcyk4.2b2pu19a3versukc \ --discovery-token-ca-cert-hash sha256:0780fd2d20ae1a445ecc933a3070737bdd4e99a128bed11ff068378191bb49ca
遇到 The connection to the server localhost:8080 was refused 該怎麼解?
sudo kubectl get nodes --kubeconfig /etc/kubernetes/admin.conf
admin.conf 或 kubelet.conf 都可以試試看
The connection to the server 140.119.19.25:6443 was refused 該怎麼辦?
檢查
~/.kube/config
的權限,若需要 sudo 才能 cat,則 sudo chmod 777 ~/.kube
以下動作只在 node 執行
- 複製 master 的
~/.kube/config
進去 node 的~/.kube/config
- (optional) 過了一天希望加入新的 node
- 在 master 執行
kubeadm token create
目前的 error
- The connection to the server 140.119.19.25:6443 was refused - did you specify the right host or port?
- not able to join node error execution phase preflight