找回密码
 立即注册
首页 业界区 安全 ubuntu 22.04安装k3s

ubuntu 22.04安装k3s

筒霓暄 7 天前
一、概述

K3s 是一个轻量级的 Kubernetes 发行版,专为在资源受限的环境中运行 Kubernetes 而设计。它是 Rancher Labs 开发的,旨在简化 Kubernetes 的部署和管理,同时保持与上游 Kubernetes 的兼容性。K3s 的特点


  • 轻量级

    • K3s 是一个轻量级的 Kubernetes 发行版,设计用于在资源受限的环境中运行,如边缘计算、物联网设备、开发环境等。
    • 它通过移除一些不必要的组件和依赖来减小体积,同时保持了 Kubernetes 的核心功能。

  • 易于安装

    • K3s 的安装非常简单,只需要一条命令即可完成安装。它支持多种操作系统,包括 Linux、macOS 和 Windows。
    • 安装脚本会自动配置和启动 K3s 服务,使得部署过程变得非常快捷。

  • 高性能

    • K3s 通过使用 Flannel 作为默认的网络插件,提供了高效的网络性能。
    • 它还支持多种存储插件,如本地存储和云存储,以满足不同的存储需求。

  • 高可用性

    • K3s 支持高可用性(HA)配置,可以通过多个服务器节点来提高集群的可靠性和容错能力。
    • 它支持在多个节点上运行控制平面组件,确保在单点故障时集群仍然可以正常运行。

  • 与 Kubernetes 兼容

    • K3s 与上游 Kubernetes 保持高度兼容,支持 Kubernetes 的所有核心功能和 API。
    • 这意味着在 K3s 上运行的应用程序可以无缝迁移到其他 Kubernetes 集群上。

  • 社区支持

    • K3s 是一个开源项目,拥有活跃的社区支持和丰富的文档。
    • 社区提供了大量的插件和工具,帮助用户更好地管理和扩展 K3s 集群。

K3s 的应用场景


  • 边缘计算

    • K3s 适合在边缘计算环境中运行,如物联网设备、远程数据中心等。这些环境通常资源有限,K3s 的轻量级特性使其成为理想选择。

  • 开发和测试环境

    • K3s 是开发和测试 Kubernetes 应用程序的理想选择,因为它安装简单,启动快速,适合在开发人员的本地机器上运行。

  • 小型生产环境

    • 对于小型生产环境,K3s 提供了足够的功能和性能,同时减少了资源消耗和管理复杂性。

  • 容器化应用

    • K3s 支持运行容器化应用程序,提供了一个完整的 Kubernetes 环境,使得应用程序的部署和管理更加简单。

二、安装

前置条件

硬件

确保硬件符合以下条件
最低硬件要求


  • CPU:最低 1 核,推荐 2 核。
  • 内存:最低 512 MB,推荐 1 GB。
  • 磁盘:建议使用 SSD,以确保最佳性能,尤其是在使用内嵌 etcd 时。
推荐硬件配置


  • 服务器节点:

    • CPU:2 核或更多。
    • 内存:2 GB 或更多。

软件

确保已经安装了docker,参考文档:https://www.cnblogs.com/xiao987334176/p/18809253
 
确保硬件软件,已经符合了条件,就可以看下面的步骤了。
 
官方给出的安装方式:
  1. curl -sfL https://get.k3s.io | sh -
复制代码
运行之后,是会出错的,输出:
  1. [INFO]  Finding release for channel stable
  2. [INFO]  Using v1.32.3+k3s1 as release
  3. [INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/downloa
  4. [ERROR]  Download failed
复制代码
为什么?因为你的网络,无法访问github,受到了限制。
如果你的服务器在国外,是不受影响的。
国内安装

使用国内的更新源进行安装
curl –sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" sh -s - --system-default-registry registry.cn-hangzhou.aliyuncs.com
参数解释:
INSTALL_K3S_MIRROR=cn,指定国内镜像源
INSTALL_K3S_EXEC="--docker",使用docker作为运行时容器,默认是containerd 
验证安装

安装完成后,K3s会自动启动,并且Kubeconfig文件会默认放在/etc/rancher/k3s/k3s.yaml路径下。验证K3s是否运行成功:
  1. # k3s kubectl get nodes
  2. NAME       STATUS   ROLES                  AGE   VERSION
  3. ubuntu-1   Ready    control-plane,master   92s   v1.32.3+k3s1
复制代码
此命令会列出集群中的所有节点,并显示它们的状态。如果你能看到节点处于Ready状态,说明K3s已成功安装并运行。 配置kubectl

为了更方便使用kubectl,可以将配置文件复制到用户的默认配置路径:
  1. mkdir -p $HOME/.kube<br>
  2. sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config<br>
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config
复制代码
现在你可以通过kubectl命令来管理K3s集群了:
  1. # kubectl get nodes
  2. NAME       STATUS   ROLES                  AGE   VERSION
  3. ubuntu-1   Ready    control-plane,master   35m   v1.32.3+k3s1
复制代码
 
设置k3s开机自启动
  1. sudo systemctl enable k3s
复制代码
 
查看k3s系统pod运行情况
  1. # kubectl get pods -A
  2. NAMESPACE     NAME                                      READY   STATUS      RESTARTS   AGE
  3. kube-system   coredns-5f754ccb4b-fg84v                  1/1     Running     0          10m
  4. kube-system   helm-install-traefik-crd-8nqzs            0/1     Completed   0          10m
  5. kube-system   helm-install-traefik-k7spn                0/1     Completed   2          10m
  6. kube-system   local-path-provisioner-65c47647b6-bd8br   1/1     Running     0          10m
  7. kube-system   metrics-server-7d5fccf496-7mddc           1/1     Running     0          10m
  8. kube-system   svclb-traefik-63f1fb11-phgk7              2/2     Running     0          9m27s
  9. kube-system   traefik-f8586b6c-dcsx7                    1/1     Running     0          9m27s
复制代码
确保状态都是正常的,没有异常
部署应用

为了确认 K3s 已经使用 Docker 作为容器运行时,可以部署一个简单的应用并检查其状态。
例如,部署一个 Nginx 应用:
1. 创建一个名为 nginx-deployment.yaml 的文件,内容如下:
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: nginx-deployment
  5. spec:
  6.   replicas: 1
  7.   selector:
  8.     matchLabels:
  9.       app: nginx
  10.   template:
  11.     metadata:
  12.       labels:
  13.         app: nginx
  14.     spec:
  15.       containers:
  16.       - name: nginx
  17.         image: nginx:latest
  18.         ports:
  19.         - containerPort: 80
复制代码
应用该配置文件:
  1. kubectl apply -f nginx-deployment.yaml
复制代码
 
2. 检查 Pod 状态:
  1. # kubectl get pods
  2. NAME                              READY   STATUS    RESTARTS   AGE
  3. nginx-deployment-96b9d695-l2m49   1/1     Running   0          10m
复制代码
如果 Pod 正常运行,说明 K3s 已成功使用 Docker 作为容器运行时。
3. 访问nginx
查看pod ip
  1. # kubectl get pods -o wide
  2. NAME                              READY   STATUS    RESTARTS   AGE   IP          NODE       NOMINATED NODE   READINESS GATES
  3. nginx-deployment-96b9d695-l2m49   1/1     Running   0          11m   10.42.0.9   ubuntu-1   <none>           <none>
复制代码
直接curl pod ip
  1. # curl 10.42.0.9
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Welcome to nginx!</title>
  6. </head>
  7. <body>
  8. <h1>Welcome to nginx!</h1>
  9. <p>If you see this page, the nginx web server is successfully installed and
  10. working. Further configuration is required.</p>
  11. <p>For online documentation and support please refer to
  12. nginx.org.<br/>
  13. Commercial support is available at
  14. nginx.com.</p>
  15. <p><em>Thank you for using nginx.</em></p>
  16. </body>
  17. </html>
复制代码
可以看到html页面,就说明应用访问正常
三、CoreDNS 配置

k3s默认使用的网络组件是Fluentd,上面部署的nginx容器,默认情况下,是没法上网的。
所以需要修改CoreDNS的configMap配置才可以,有2种方式:
1. kubectl -n kube-system edit configmap coredns
2. CoreDNS 配置文件,文件位置:/var/lib/rancher/k3s/server/manifests/coredns.yaml
注意:以上2种方式修改后,重启k3s,就会被重置。好吧,白干活了。
永久修改

如果你想修改 K3s 中 CoreDNS 中的配置,并且持久生效的话,可以通过额外的 coredns-custom configmap 安装到 CoreDNS 容器中,并从包含的文件中导入覆盖和额外的 CoreDNS 配置。
ConfigMap 的 name 一定刚要是 coredns-custom 才能够被 coredns 的 deployment 识别并挂载。
[code]# 创建一个配置文件,例如 host.yamlcat
您需要登录后才可以回帖 登录 | 立即注册