iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
AI & Data

AI平台初學者工作坊: 從training、tracking到serving系列 第 2

安裝kubeadmin

安裝kubeadmin

在前一篇提到, 後續範例使用到的工具可以自建或使用現成的工具, 會將自建工具建置在kubernets culster上, 因此需要一座K8s cluster來安裝這些工具. 預計使用kubeadm建立這個k8s cluster, 所以接下來說明如何使用kubeadm架設一個k8s cluster.

VM資訊

已先準備好下列表格的三個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都要執行)

    • sudo apt-get update
  • 各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執行)

    • 將前一個步驟copy下來的指令貼到二個work node上並執行, 這樣就會將worker node加入cluster
  • 確認cluster的狀態

    • 這時候三個node的status都是not ready, 因為我們還沒有安裝網路元件
    kubectl get node
    
  • 安裝網路元件

    • 我們要安裝的是calico, 請執行下列指令
    $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

    • 在三個節點上都要改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=
    
    • 然後重啟kubelet
      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


上一篇
AI平台初學者工作坊: 從training、tracking到serving
下一篇
範例一:使用MNIST資料進行訓練與模型部署
系列文
AI平台初學者工作坊: 從training、tracking到serving30

尚未有邦友留言

立即登入留言