研发工程师玩转Kubernetes——多Worker Node部署

本文详细介绍了如何使用UbuntuServer最小化版本部署虚拟机,安装并配置系统,设置root密码,更新系统,安装必要的网络工具。接着,通过microk8s安装Kubernetes,并将一台虚拟机设为masternode,其他作为WorkerNodes加入集群。过程中包括启用DNS服务,以及生成和使用token添加WorkerNode。最后,展示了如何检查集群状态,确认所有节点已正确加入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在之前的系列中,我们都是在单Node上“玩转”kubernetes,熟悉了它很多指令和特性。从本节开始,我们开始探索多Worker Node的相关特性。

部署虚拟机

因为desktop版ubuntu非常占用内存,而且我们已经熟悉了一些基本操作,可以将一些k8s内部网络访问的地址暴露给外部,于是现在我们使用ubuntu server版。
我们继续使用Hyper-V进行部署。注意选择minimized的Ubuntu Server版。

安装系统

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这儿注意选择minimized版。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意勾选安装openssh server
在这里插入图片描述
这步不选择任何软件。后续我们通过命令安装microk8s。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
等待安装结束,重启系统。

配置系统

设置root密码

sudo passwd

更新系统

sudo apt update
sudo apt upgrade

安装网络工具

非必须,主要用于查看其IP。

sudo apt install net-tools

安装microk8s

sudo snap install microk8s --classic 
sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
su $USER
sudo snap alias microk8s.kubectl kubectl

使用上述方法,我们将新建ubuntuA、ubuntuB、ubuntuC、ubuntuD和ubuntuE共5台虚拟机。

组建集群

我们将让ubuntuA成为master node,其他是worker node。如下图,中间的是ubuntuA,四周的是其他虚拟机(node)。
在这里插入图片描述

master node启动dns

在ubuntuA上执行下面指令

microk8s enable dns

Infer repository core for addon dns
Enabling DNS
Using host configuration from /run/systemd/resolve/resolv.conf
Applying manifest
serviceaccount/coredns created
configmap/coredns created
deployment.apps/coredns created
service/kube-dns created
clusterrole.rbac.authorization.k8s.io/coredns created
clusterrolebinding.rbac.authorization.k8s.io/coredns created
Restarting kubelet
[sudo] password for fangliang:
Adding argument --cluster-domain to nodes.
Adding argument --cluster-dns to nodes.
Restarting nodes.
DNS is enabled

添加Worker Node

下面的操作是循环的,即增加一个Worker Node要执行一次下面的操作。因为每次都会生成一个token,一个token使用完就不能再用。
以把ubuntuE添加为Worker Node为例。

生成添加指令

在ubuntuA上执行

microk8s add-node 

From the node you wish to join to this cluster, run the following:
microk8s join 172.23.71.113:25000/c4be32f6d314c0ba095e327329c51014/2fcbd8bdd6fc
Use the ‘–worker’ flag to join a node as a worker not running the control plane, eg:
microk8s join 172.23.71.113:25000/c4be32f6d314c0ba095e327329c51014/2fcbd8bdd6fc --worker
If the node you are adding is not reachable through the default interface you can use one of the following:
microk8s join 172.23.71.113:25000/c4be32f6d314c0ba095e327329c51014/2fcbd8bdd6fc

复制其中的包含token的–worker的链接。

添加worker

在ubuntuE上执行从上面复制的链接

microk8s join 172.23.71.113:25000/c4be32f6d314c0ba095e327329c51014/2fcbd8bdd6fc --worker

Contacting cluster at 172.23.71.113
The node has joined the cluster and will appear in the nodes list in a few seconds.
This worker node gets automatically configured with the API server endpoints.
If the API servers are behind a loadbalancer please set the ‘–refresh-interval’ to ‘0s’ in:
/var/snap/microk8s/current/args/apiserver-proxy
and replace the API server endpoints with the one provided by the loadbalancer in:
/var/snap/microk8s/current/args/traefik/provider.yaml

查看集群

我们将ubuntuA作为master node,就需要在上面执行查看指令

kubectl get nodes --show-labels
NAME      STATUS   ROLES    AGE    VERSION   LABELS
ubuntuc   Ready    <none>   7h1m   v1.26.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ubuntuc,kubernetes.io/os=linux,microk8s.io/cluster=true,node.kubernetes.io/microk8s-worker=microk8s-worker
ubuntue   Ready    <none>   97s    v1.26.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ubuntue,kubernetes.io/os=linux,microk8s.io/cluster=true,node.kubernetes.io/microk8s-worker=microk8s-worker
ubuntub   Ready    <none>   7h1m   v1.26.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ubuntub,kubernetes.io/os=linux,microk8s.io/cluster=true,node.kubernetes.io/microk8s-worker=microk8s-worker
ubuntua   Ready    <none>   8h     v1.26.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ubuntua,kubernetes.io/os=linux,microk8s.io/cluster=true,node.kubernetes.io/microk8s-controlplane=microk8s-controlplane
ubuntud   Ready    <none>   7h     v1.26.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ubuntud,kubernetes.io/os=linux,microk8s.io/cluster=true,node.kubernetes.io/microk8s-worker=microk8s-worker

可以看到ubuntuA只是microk8s-controlplane,而其他则是microk8s-worker。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

breaksoftware

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值