title: 单机部署autok3s toc: true cover: 'https://img.paulzzh.com/touhou/random?13' date: 2022-10-22 13:20:42 categories: Kubernetes tags: [Kubernetes, autok3s]
在上一篇文章 《单机部署k3s》 中,我们讲了k3s的部署,这篇主要是讲解如何使用autok3s快速部署一个k3s集群;
autok3s快速启动脚本:
<br/>
<!--more-->上一篇文章 《单机部署k3s》 讲述了 k3s 的基本部署和使用。
由于在 k3s 上,默认 master 节点是可以作为工作节点的(tainted
),因此我们可以直接使用我们的单节点 k3s;
不过如果想要增加 worker 节点、将单个 master 节点变为高可用的集群,还是比较麻烦的;
此时可以使用 autok3s 来部署 k3s 集群;
AutoK3s 是用于简化 K3s 集群管理的轻量级工具,可以使用 AutoK3s 在任何地方运行 K3s 服务!
下面是来自 AutoK3s 文档中展示的一些 feature:
同时,AutoK3s 可以支持多个云厂商:
<font color="#f00">**当然,我觉得最方便的就是 K3d 的形式,即:直接在宿主机 Docker 中初始化 K3s 集群!**</font>
autok3s 官方文档:
<br/>
对于学习、研究来说 K3d 的形式是最好,也是最方便的:你只需要一台安装了 Docker 的设备即可!
可以通过下面的命令直接一键部署好 AntoK3s:
docker run -itd --restart=always --name=my-autok3s --net host -v /var/run/docker.sock:/var/run/docker.sock cnrancher/autok3s:v0.5.2
<font color="#f00">**这里需要注意,如果想要在 docker 中使用 K3d provider,则需要使用宿主机网络启动 AutoK3s 镜像,即声明:**</font>
--net host
<font color="#f00">**同时由于我们是 K3d 的形式,因此也必须将 `docker.sock` 挂载到容器中!**</font>
可以看到容器已经起来了:
$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec80a4bc165e cnrancher/autok3s:v0.5.2 "autok3s serve --bin…" About a minute ago Up About a minute my-autok3s
我们可以直接通过访问 server-ip:8080
访问 AutoK3s!
Mac 部署AutoK3s有坑!更多内容,见:
<br/>
我们可以使用快速创建功能,在指定的云提供商服务中,快速启动一个K3s集群!
以下图为例,我们将在 Docker 中使用默认配置创建一个单节点的 K3s 集群:
简单情况下,可以只设置 master、worker节点数,以及集群名称即可部署!
具体内容可见:
<br/>
在集群管理中,我们可以选中要添加节点的集群,点击右侧下拉菜单中的 Join Node 按钮,在弹出的窗口中设置要添加的节点数量即可;
<br/>
几乎所有场景我们都会使用 kubectl
来管理我们的集群,此时可以点击右上角 Launch Kubectl 按钮,在下拉框中选择要操作的集群后,便可以在 UI 控制台操作选中的集群;
不过这种方式需要在 Web 界面去操作,非常麻烦;
<font color="#f00">**AutoK3s 还提供了Kubeconfig 文件,可以单独下载指定集群的 Kubeconfig 文件!**</font>
点击指定集群右侧下拉菜单中的 Download KubeConfig 按钮,在弹出窗口中选择复制或下载文件;
随后将文件内容写到,例如:
~/.kube/config
;然后配置环境变量:
$ vi ~/.bashrc
export KUBECONFIG=/root/.kube/config
$ source ~/.bashrc
最后切换 kubectl 的 context:
kubectl config use-context k3d-my-k3s
上面的 k3d-my-k3s
由你的 k3s 集群名称决定,取 contexts.context.name
配置即可!
下面测试:
$ kubectl get nodes -A
NAME STATUS ROLES AGE VERSION
k3d-my-k3s-agent-0 Ready <none> 10m v1.21.7+k3s1
k3d-my-k3s-server-0 Ready control-plane,master 10m v1.21.7+k3s1
k3d-my-k3s-agent-2 Ready <none> 10m v1.21.7+k3s1
k3d-my-k3s-agent-1 Ready <none> 10m v1.21.7+k3s1
可以看到,所有的节点都已经被创建!
<br/>
可以在Web界面通过右侧下拉菜单中选择 Enable Explorer 功能来开启 kube-explorer;
<br/>
前面说了那么多,最后当然是要真正部署一个应用来测试我们的 K3s 集群了!
这里选用了 busybox 镜像,这是一个包含了许多最常用linux命令和工具的软件镜像;
首先我们创建一个 yaml 配置文件:
busybox-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: busybox
namespace: demo
spec:
replicas: 3
selector:
matchLabels:
app: busybox
template:
metadata:
labels:
app: busybox
spec:
containers:
- name: busybox
image: busybox:1.35.0
args:
- /bin/sh
- -c
- sleep 10; touch /tmp/healthy; sleep 60
readinessProbe: # 就绪探针
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 10 # 10s之后开始第一次探测
periodSeconds: 5 # 第一次探测之后每隔5s探测一次
上面在 namespace 为 demo 的命名空间:
busybox
Deployment;busybox:1.35.0
;replicas: 3
个副本;/bin/sh -c "sleep 10; touch /tmp/healthy; sleep 60"
;cat /tmp/healthy
,服务启动 10s之后开始第一次探测,第一次探测之后每隔5s探测一次;上面用到了新的 namespace,我们先创建:
$ kubectl create ns demo
namespace/demo created
$ kubectl get ns -A
NAME STATUS AGE
default Active 5h50m
kube-system Active 5h50m
kube-public Active 5h50m
kube-node-lease Active 5h50m
demo Active 12s
namespace 创建成功;
下面部署我们的服务:
$ kubectl apply -f busybox-deploy.yaml
deployment.apps/busybox created
$ kubectl get po -n demo -w
NAME READY STATUS RESTARTS AGE
busybox-74574b56f4-dnz4k 0/1 ContainerCreating 0 1s
busybox-74574b56f4-k6t6w 0/1 ContainerCreating 0 1s
busybox-74574b56f4-2xqnq 0/1 ContainerCreating 0 1s
busybox-74574b56f4-dnz4k 0/1 Running 0 3s
busybox-74574b56f4-k6t6w 0/1 Running 0 4s
busybox-74574b56f4-2xqnq 0/1 Running 0 8s
busybox-74574b56f4-dnz4k 1/1 Running 0 15s
busybox-74574b56f4-k6t6w 1/1 Running 0 15s
busybox-74574b56f4-2xqnq 1/1 Running 0 20s
可以看到,我们服务的 3个副本很快就已经部署成功了!
$ kubectl get po -n demo -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox-74574b56f4-dnz4k 1/1 Running 0 96s 10.42.3.6 k3d-my-k3s-agent-0 <none> <none>
busybox-74574b56f4-k6t6w 1/1 Running 0 96s 10.42.0.5 k3d-my-k3s-server-0 <none> <none>
busybox-74574b56f4-2xqnq 1/1 Running 0 96s 10.42.1.4 k3d-my-k3s-agent-2 <none> <none>
并且,由于 K3s 默认的 master 节点也可以部署,因此有一个 pod 被部署到了 master 节点(busybox-74574b56f4-k6t6w
);
<br/>
相比于使用 k3s 单个部署,AutoK3s 提供了更方便的工具可以直接部署整个 K3s 集群!
还等什么,快去部署你自己的 K3s 集群吧!
<br/>
autok3s快速启动脚本:
<br/>