MicroK8s 多节点集群部署与测试指南
本文记录了从创建虚拟机、安装 MicroK8s、替换镜像文件、创建 Kubernetes 集群、部署 Nginx 副本到一系列测试操作的完整步骤。
1. 创建虚拟机
使用 Multipass 创建虚拟机,用于安装 MicroK8s。
multipass launch --name microk8s-vm --cpus 2 --mem 4G --disk 20G
multipass launch --name microk8s-vm2 --cpus 2 --mem 4G --disk 20G
microk8s-vm
和microk8s-vm2
是虚拟机的名称。- 为每台虚拟机指定了 2 个 CPU,4GB 内存,20GB 磁盘。
2. 安装 MicroK8s
进入虚拟机并安装 MicroK8s。
multipass shell microk8s-vm
sudo apt update && sudo apt upgrade -y
sudo snap install microk8s --classic --channel=1.31/stable
- 更新系统并安装 MicroK8s。
- 安装完成后,MicroK8s 会自动启动。
3. 替换镜像源
为了提高下载速度,可以将 MicroK8s 的镜像源替换为国内镜像源。
sudo nano /var/snap/microk8s/current/args/containerd-template.toml
在 [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
下添加国内镜像源,例如:
# Use config version 2 to enable new configuration fields.
version = 2
oom_score = 0
[grpc]
uid = 0
gid = 0
max_recv_message_size = 16777216
max_send_message_size = 16777216
[debug]
address = ""
uid = 0
gid = 0
[metrics]
address = "127.0.0.1:1338"
grpc_histogram = false
[cgroup]
path = ""
# The 'plugins."io.containerd.grpc.v1.cri"' table contains all of the server options.
[plugins."io.containerd.grpc.v1.cri"]
stream_server_address = "127.0.0.1"
stream_server_port = "0"
enable_selinux = false
sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"
stats_collect_period = 10
enable_tls_streaming = false
max_container_log_line_size = 16384
# 'plugins."io.containerd.grpc.v1.cri".containerd' contains config related to containerd
[plugins."io.containerd.grpc.v1.cri".containerd]
# snapshotter is the snapshotter used by containerd.
snapshotter = "${SNAPSHOTTER}"
# no_pivot disables pivot-root (linux only), required when running a container in a RamDisk with runc.
# This only works for runtime type "io.containerd.runtime.v1.linux".
no_pivot = false
# default_runtime_name is the default runtime name to use.
default_runtime_name = "${RUNTIME}"
# 'plugins."io.containerd.grpc.v1.cri".containerd.runtimes' is a map from CRI RuntimeHandler strings, which specify types
# of runtime configurations, to the matching configurations.
# In this example, 'runc' is the RuntimeHandler string to match.
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
# runtime_type is the runtime type to use in containerd e.g. io.containerd.runtime.v1.linux
runtime_type = "${RUNTIME_TYPE}"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-container-runtime]
# runtime_type is the runtime type to use in containerd e.g. io.containerd.runtime.v1.linux
runtime_type = "${RUNTIME_TYPE}"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-container-runtime.options]
BinaryName = "nvidia-container-runtime"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.kata]
runtime_type = "io.containerd.kata.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.kata.options]
BinaryName = "kata-runtime"
# 'plugins."io.containerd.grpc.v1.cri".cni' contains config related to cni
[plugins."io.containerd.grpc.v1.cri".cni]
# bin_dir is the directory in which the binaries for the plugin is kept.
bin_dir = "${SNAP_DATA}/opt/cni/bin"
# conf_dir is the directory in which the admin places a CNI conf.
conf_dir = "${SNAP_DATA}/args/cni-network"
# 'plugins."io.containerd.grpc.v1.cri".registry' contains config related to the registry
[plugins."io.containerd.grpc.v1.cri".registry]
#config_path = "${SNAP_DATA}/args/certs.d"
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
endpoint = ["https://xx.mirror.swr.myhuaweicloud.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://xx.mirror.swr.myhuaweicloud.com"]
修改完成后,重启 MicroK8s 使更改生效:
sudo microk8s stop
sudo microk8s start
启动不起来的话,用一下命令查看下报错:
sudo journalctl -u snap.microk8s.daemon-containerd -e
有些镜像可以预先pull指定一下
sudo microk8s ctr image pull registry.cn-hangzhou.aliyuncs.com/xxx/cni:v3.25.1 && sudo microk8s ctr image tag registry.cn-hangzhou.aliyuncs.com/xxx/cni:v3.25.1 docker.io/calico/cni:v3.25.1
sudo microk8s ctr image pull registry.cn-hangzhou.aliyuncs.com/xxx/coredns:1.10.1 && sudo microk8s ctr image tag registry.cn-hangzhou.aliyuncs.com/xxx/coredns:1.10.1 docker.io/coredns/coredns:1.10.1
sudo microk8s ctr image pull registry.cn-hangzhou.aliyuncs.com/xxx/node:v3.25.1 && sudo microk8s ctr image tag registry.cn-hangzhou.aliyuncs.com/xxx/node:v3.25.1 docker.io/calico/node:v3.25.1
sudo microk8s ctr image pull registry.cn-hangzhou.aliyuncs.com/xxx/kube-controllers:v3.25.1 && sudo microk8s ctr image tag registry.cn-hangzhou.aliyuncs.com/xxx/kube-controllers:v3.25.1 docker.io/calico/kube-controllers:v3.25.1
4. 创建多节点集群
在主节点(microk8s-vm
)上生成加入令牌:
microk8s add-node
进入辅助节点(microk8s-vm2
)并加入集群:
microk8s join <主节点IP>:25000/<token>
例如:
microk8s join 192.168.64.13:25000/33e6aed76f87f6f536dc764b94d6401f/29023eed9b34
完成后可以在主节点上查看集群状态:
microk8s kubectl get nodes
5. 部署 Nginx 副本
在主节点上创建 Nginx 部署:
microk8s kubectl create deployment nginx --image=nginx
扩展 Nginx 副本数量到 5:
microk8s kubectl scale deployment nginx --replicas=5
查看 Pod 状态:
microk8s kubectl get pods -o wide
可以看到 5 个 Nginx 副本分布在两个节点上。
6. 暴露 Nginx 服务
通过 NodePort 暴露 Nginx 服务:
microk8s kubectl expose deployment nginx --port=80 --type=NodePort
查看服务的 NodePort:
microk8s kubectl get svc nginx
例如:80:31499/TCP
表示可以通过集群节点的 IP 和端口 31499
访问 Nginx 服务。
7. 测试负载均衡
在宿主机上通过 NodePort 访问 Nginx 服务:
curl http://<主节点IP>:<NodePort>
例如:
curl http://192.168.64.13:31499
通过多次访问,可以观察到请求被分发到不同的 Pod,验证负载均衡效果。
8. 模拟节点故障
停止辅助节点:
multipass stop microk8s-vm2
查看 Pod 的重新调度情况:
microk8s kubectl get pods -o wide
可以看到原来在辅助节点上的 Pod 被重新调度到主节点上,验证 Kubernetes 的高可用性和故障自愈能力。
9. 清理环境
删除 Nginx 部署和服务:
microk8s kubectl delete deployment nginx
microk8s kubectl delete service nginx
总结
通过以上步骤,我们实现了在 Multipass 虚拟机中部署 MicroK8s、创建多节点 Kubernetes 集群、部署 Nginx 副本以及测试负载均衡和故障自愈的完整过程。这些操作可以帮助我们更好地理解 Kubernetes 的高可用性和集群管理功能。
《致命伤害》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/27701.html
《诡异酒楼》恐怖片高清在线免费观看:https://www.jgz518.com/xingkong/56642.html
《天下无敌》动作片高清在线免费观看:https://www.jgz518.com/xingkong/128296.html
《人面兽心2001》喜剧片高清在线免费观看:https://www.jgz518.com/xingkong/41909.html
《诡异酒楼》恐怖片高清在线免费观看:https://www.jgz518.com/xingkong/56642.html
《萤火虫(全新数字重制版 )》欧美剧高清在线免费观看:https://www.jgz518.com/xingkong/142219.html
《嚎叫2012》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/29594.html
博主太厉害了!
真好呢
探究1.80版本传奇私服中帝王无双的独特魅力:https://501h.com/lianji/2024-10-19/43299.html
哈哈哈,写的太好了https://www.cscnn.com/