diff --git "a/docs/zh/docs/K3s/K3s\351\203\250\347\275\262\346\214\207\345\215\227.md" "b/docs/zh/docs/K3s/K3s\351\203\250\347\275\262\346\214\207\345\215\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..6d06af68053e1e0238c98713daff3d2b98c7ddb3 --- /dev/null +++ "b/docs/zh/docs/K3s/K3s\351\203\250\347\275\262\346\214\207\345\215\227.md" @@ -0,0 +1,177 @@ +# K3s部署指南 + +### 什么是K3s +K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能: +- 打包为单个二进制文件。 +- 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。 +- 封装在简单的启动程序中,通过该启动程序处理很多复杂的 TLS 和选项。 +- 默认情况下是安全的,对轻量级环境有合理的默认值。 +- 添加了简单但功能强大的batteries-included功能,例如:本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik Ingress controller。 +- 所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中,使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。 +- 最大程度减轻了外部依赖性,K3s 仅需要 kernel 和 cgroup 挂载。 + +### 适用场景 +K3s 适用于以下场景: + +- 边缘计算-Edge +- 物联网-IoT +- CI +- Development +- ARM +- 嵌入 K8s + +由于运行 K3s 所需的资源相对较少,所以 K3s 也适用于开发和测试场景。在这些场景中,如果开发或测试人员需要对某些功能进行验证,或对某些问题进行重现,那么使用 K3s 不仅能够缩短启动集群的时间,还能够减少集群需要消耗的资源。 + +### 部署K3s + +**步骤1:准备工作** +- 确保server节点及agent节点主机名不一致: + +可以通过 hostnamectl set-hostname “主机名” 进行主机名的修改。 + +![1661829534335](./figures/set-hostname.png) + +- 在各节点yum 安装 K3s: + + K3s官网采用下载对应架构二进制可执行文件的格式,通过install.sh脚本进行离线安装,openEuler社区将该二进制文件的编译过程移植到社区中,并编译出RPM包。此处可通过yum命令直接进行下载安装。 + +![1661830441538](./figures/yum-install.png) + + **步骤2:部署server节点** + +如需在单个服务器上安装 K3s,可以在 server 节点上执行如下操作: +``` +INSTALL_K3S_SKIP_DOWNLOAD=true k3s-install.sh +``` + +![1661825352724](./figures/server-install.png) + + **步骤3:检查server部署情况** + +![1661825403705](./figures/check-server.png) + + **步骤4:部署agent节点** + +首先查询server节点的token值,该token可在server节点的/var/lib/rancher/k3s/server/node-token查到。 + +> **注意**: +> +> 后续我们只用到该token的后半部分。 + +![1661825538264](./figures/token.png) + +选择添加其他 agent,请在每个 agent 节点上执行以下操作。 + +``` +INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken k3s-install.sh +``` + +> **注意** +> +> 将 myserver 替换为 server 的 IP 或有效的 DNS,并将 mynodetoken 替换 server 节点的 token: + +![1661829392357](./figures/agent-install.png) + + **步骤5:检查agent节点是否部署成功** + +安装完毕后,回到 **server** 节点,执行 `kubectl get nodes`,可以看到agent节点已注册成功。 + +![1661826797319](./figures/check-agent.png) + +至此,一个基础的k3s集群搭建完成。 + +### 在k3s上部署第一个nginx服务 + +**步骤1:创建Deployment** + +在 kubernetes 中,deployment 用来部署应用,创建编辑deployment.yml文件如下: + +``` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment + labels: + app: nginx +spec: + replicas: 1 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:alpine + ports: + - containerPort: 80 + +``` + +按照需要配置好deployment,使用kubectl apply 去创建部署 + +``` +[root@k3s-server home]# kubectl apply -f deployment.yml +``` +![输入图片说明](figures/apply-deployment.png) + +deployment成功创建后,查看pods状态为running + +``` +[root@k3s-server home]# kubectl get pods +``` +![输入图片说明](figures/get-pods.png) + +**步骤2:创建servcie** + +当我们创建deployment完毕,nginx 服务仅仅只是部署,我们还需要让它暴露出自己的服务。这就相当于给局域网里的电脑插上了网线,从此就可以对外公开自己的服务。创建编辑service.yml如下: + +``` +apiVersion: v1 +kind: Service +metadata: + name: nginx-service +spec: + selector: + app: nginx + ports: + - protocol: TCP + port: 80 + targetPort: 80 + nodePort: 30080 + type: NodePort + +``` + +按照需要配置好service.yml,使用kubectl apply 去创建服务 + + +``` +[root@k3s-server home]# kubectl apply -f service.yml +``` + +![输入图片说明](figures/apply-service.png) + +**步骤3:查看服务信息** + +``` +[root@k3s-server home]# kubectl describe service nginx-service +``` + +![输入图片说明](figures/describe-service.png) + +**步骤4:访问服务** + +在网内使用curl 命令访问服务器,我们可以看到nginx服务已经对外开启 + +![输入图片说明](figures/curl-nginx.png) + +至此,一个nignx服务 已经在集群跑起来了。 + + +### 更多用法 + +K3s的更多用法可以参考K3s官网,https://rancher.com/docs/k3s/latest/en/ ,https://docs.rancher.cn/k3s/ diff --git a/docs/zh/docs/K3s/figures/agent-install.png b/docs/zh/docs/K3s/figures/agent-install.png new file mode 100644 index 0000000000000000000000000000000000000000..dca1d64ec8aae821393bb715daf4c56b783a68e0 Binary files /dev/null and b/docs/zh/docs/K3s/figures/agent-install.png differ diff --git a/docs/zh/docs/K3s/figures/apply-deployment.png b/docs/zh/docs/K3s/figures/apply-deployment.png new file mode 100644 index 0000000000000000000000000000000000000000..5b93b5af8a4d0ae90023f98e6b82646b794ff057 Binary files /dev/null and b/docs/zh/docs/K3s/figures/apply-deployment.png differ diff --git a/docs/zh/docs/K3s/figures/apply-service.png b/docs/zh/docs/K3s/figures/apply-service.png new file mode 100644 index 0000000000000000000000000000000000000000..a175c41db2b5b8835b702c7d210f870b66e33637 Binary files /dev/null and b/docs/zh/docs/K3s/figures/apply-service.png differ diff --git a/docs/zh/docs/K3s/figures/check-agent.png b/docs/zh/docs/K3s/figures/check-agent.png new file mode 100644 index 0000000000000000000000000000000000000000..aa467713353d70ad513e8ee13ac9d8b6520b7ee0 Binary files /dev/null and b/docs/zh/docs/K3s/figures/check-agent.png differ diff --git a/docs/zh/docs/K3s/figures/check-server.png b/docs/zh/docs/K3s/figures/check-server.png new file mode 100644 index 0000000000000000000000000000000000000000..06343de9a8b0eacb0f6194cf438b2b27af88cae4 Binary files /dev/null and b/docs/zh/docs/K3s/figures/check-server.png differ diff --git a/docs/zh/docs/K3s/figures/curl-nginx.png b/docs/zh/docs/K3s/figures/curl-nginx.png new file mode 100644 index 0000000000000000000000000000000000000000..9e2959f638ff7cd2628fd52b83cb80f59c33579b Binary files /dev/null and b/docs/zh/docs/K3s/figures/curl-nginx.png differ diff --git a/docs/zh/docs/K3s/figures/describe-service.png b/docs/zh/docs/K3s/figures/describe-service.png new file mode 100644 index 0000000000000000000000000000000000000000..bd64d255f8b8cb016e28b54771885b2d7d493765 Binary files /dev/null and b/docs/zh/docs/K3s/figures/describe-service.png differ diff --git a/docs/zh/docs/K3s/figures/get-pods.png b/docs/zh/docs/K3s/figures/get-pods.png new file mode 100644 index 0000000000000000000000000000000000000000..565a173f9b9e3953627feca739735006f5182c21 Binary files /dev/null and b/docs/zh/docs/K3s/figures/get-pods.png differ diff --git a/docs/zh/docs/K3s/figures/server-install.png b/docs/zh/docs/K3s/figures/server-install.png new file mode 100644 index 0000000000000000000000000000000000000000..7d30c8f4f73946c8b0555186c1736492039da731 Binary files /dev/null and b/docs/zh/docs/K3s/figures/server-install.png differ diff --git a/docs/zh/docs/K3s/figures/set-hostname.png b/docs/zh/docs/K3s/figures/set-hostname.png new file mode 100644 index 0000000000000000000000000000000000000000..32564d6159825b6d4131a6b138a493188ce88c6c Binary files /dev/null and b/docs/zh/docs/K3s/figures/set-hostname.png differ diff --git a/docs/zh/docs/K3s/figures/token.png b/docs/zh/docs/K3s/figures/token.png new file mode 100644 index 0000000000000000000000000000000000000000..79e5313bd1d5e707659cd08d4aafdf528b9df8f0 Binary files /dev/null and b/docs/zh/docs/K3s/figures/token.png differ diff --git a/docs/zh/docs/K3s/figures/yum-install.png b/docs/zh/docs/K3s/figures/yum-install.png new file mode 100644 index 0000000000000000000000000000000000000000..0e601a23a5a67e7927f12bc90d1a4137e1a3a567 Binary files /dev/null and b/docs/zh/docs/K3s/figures/yum-install.png differ