安装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


<<:  [Day01] 程序菜鸟自学C++资料结构 – 前言导读

>>:  [DAY 2] _ 做一块自己的开发板(stm32f030)

[铁人赛 Day02] 如何提升你的 React 网站易用性?(Web Accessibility)(上)- 无障碍网站 intro

文章大纲与涵盖范围 这篇文章会介绍无障碍网站(Web Accessibility,又称为 a11y)...

[Day16]-应用模组

建立自己的函数与类别模组,两者应用都差不多,所以一起讲 先建立自己的函数与类别 导入模组 结果 随...

【把玩Azure DevOps】Day15 Pipeline与Artifacts应用:覆写C#专案属性资讯(上传nuget package成功)

前面文章透过Pipeline上传nuget package到Artifact feed的时候因为产生...

Day7-Go回圈

前言 回圈基本上是每个程序语言必备的函式,藉以回圈来达成反覆或是循环的动作。而 Go 语言的回圈种类...

29.Getter and Mutation

Vuex内的getter,相当於component内的computed,作用都是改变资料的表示形式 ...