在前一篇提到, 後續範例使用到的工具可以自建或使用現成的工具, 會將自建工具建置在kubernets culster上, 因此需要一座K8s cluster來安裝這些工具. 預計使用kubeadm建立這個k8s cluster, 所以接下來說明如何使用kubeadm架設一個k8s cluster.
已先準備好下列表格的三個VM, 資訊如下:
Node | CPU | RAM | OS | eno0 |
---|---|---|---|---|
Master | 2 Core | 4G | Ubuntu 18.04 | 172.23.180.10 |
Worker01 | 4 Core | 8G | Ubuntu 18.04 | 172.23.180.11 |
Worker02 | 4 Core | 8G | Ubuntu 18.04 | 172.23.180.12 |
ps:在這個K8s cluster中沒有GPU, 所以這個環境僅供示範, 如果要做大量資料的訓練是會很慢的
更新os(三個node都要執行)
各node之間設定 ssh不用密碼, 這部份可以參考這個連結
關閉 swap space(三個node都要執行)
$sudo vim /etc/fstab
將 swap 這一行註解起來(前方加上 '#' )
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/ubuntu--vg-root / ext4 errors=remount-ro 0 1
# /dev/mapper/ubuntu--vg-swap_1 none swap sw 0 0
安裝docker
安裝kubernetes package
init master node
請參考下列指令:
ps: 下列指令的IP記得要改為你自己的master node IP
$sudo kubeadm init --apiserver-advertise-address=192.168.58.10 --pod-network-cidr=10.244.0.0/16
init好master node之後再執行下列指令(on master node), 這樣之後在master node上操作kubectl指令比較方便
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
init好master node之後也會印出像下方的指令, 先把這行sudo kubeadm join
指令copy下來.
You can now join any number of machines by running the following on each node
as root:
$sudo kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
將二個worker node加入K8s custer(在worker node執行)
確認cluster的狀態
kubectl get node
安裝網路元件
$curl https://docs.projectcalico.org/manifests/calico.yaml -O
$kubectl apply -f calico.yaml
等一小段時間後, 再使用kubectl get node
指令查看node狀態, 三個node都會是ready, 像這樣
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 28d v1.21.3
k8s-worker01 Ready <none> 28d v1.21.3
k8s-worker02 Ready <none> 28d v1.21.3
修改節點IP
192.168.58.xx
替換為自己的IP$sudo vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
加入第二行的內容(again,記得改為自己的IP)
EnvironmentFile=-/etc/default/kubelet
Environment="KUBELET_EXTRA_ARGS=--node-ip=192.168.58.xx"
ExecStart=
sudo systemctl stop kubelet.service
sudo systemctl daemon-reload
sudo systemctl start kubelet.service
到這裡, 我們已經有一個K8s cluster可以使用了, 之後就會使用這個cluster來安裝我們所需要的工具
https://kubernetes.io/docs/reference/setup-tools/kubeadm/
https://docs.docker.com/engine/install/ubuntu/
https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises