在前一篇提到, 後续范例使用到的工具可以自建或使用现成的工具, 会将自建工具建置在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
<<: [Day01] 程序菜鸟自学C++资料结构 – 前言导读
>>: [DAY 2] _ 做一块自己的开发板(stm32f030)
文章大纲与涵盖范围 这篇文章会介绍无障碍网站(Web Accessibility,又称为 a11y)...
建立自己的函数与类别模组,两者应用都差不多,所以一起讲 先建立自己的函数与类别 导入模组 结果 随...
前面文章透过Pipeline上传nuget package到Artifact feed的时候因为产生...
前言 回圈基本上是每个程序语言必备的函式,藉以回圈来达成反覆或是循环的动作。而 Go 语言的回圈种类...
Vuex内的getter,相当於component内的computed,作用都是改变资料的表示形式 ...