长期支持版本

    社区创新版本

      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 “主机名” 进行主机名的修改。

        [root@agent ~]# hostnamectl set-hostname agent
        
      • 在各节点yum 安装 K3s。

        K3s官网采用下载对应架构二进制可执行文件的格式,通过install.sh脚本进行离线安装,openEuler社区将该二进制文件的编译过程移植到社区中,并编译出RPM包。此处可通过yum命令直接进行下载安装。

        [root@agent ~]# yum install k3s
        

      步骤2:部署server节点

      如需在单个服务器上安装 K3s,可以在 server 节点上执行如下操作:

      INSTALL_K3S_SKIP_DOWNLOAD=true k3s-install.sh
      

      1661825352724

      步骤3:检查server部署情况

      [root@openEuler ~]# kubectl get nodes
      

      步骤4:部署agent节点

      首先查询server节点的token值,该token可在server节点的/var/lib/rancher/k3s/server/node-token查到。

      注意:

      后续我们只用到该token的后半部分。

      1661825538264

      选择添加其他 agent,请在每个 agent 节点上执行以下操作,执行之前放行6443/tcp和8472/udp端口。

      firewall-cmd --add-port=6443/tcp --zone=public --permanent
      firewall-cmd --add-port=8472/udp --zone=public --permanent
      firewall-cmd --reload
      INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken k3s-install.sh
      

      注意:

      将 myserver 替换为 server 的 IP 或有效的 FQDN,并将 mynodetoken 替换 server 节点的 token。

      1661829392357

      步骤5:检查agent节点是否部署成功

      安装完毕后,回到 server 节点,执行 kubectl get nodes,可以查看agent节点是否注册成功。

      至此,一个基础的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创建deployment。

      [root@k3s-server home]# kubectl apply -f deployment.yml
      

      输入图片说明

      deployment成功创建后,查看pods状态为running。

      [root@k3s-server home]# kubectl get pods
      

      输入图片说明

      步骤2:创建service

      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
      

      输入图片说明

      步骤3:查看服务信息

      [root@k3s-server home]# kubectl describe service nginx-service
      

      输入图片说明

      步骤4:访问服务

      网内使用curl命令访问服务器,从结果可看出 nginx 服务已经对外开启。

      输入图片说明

      至此,一个 nignx 服务已在集群中运行。

      更多用法

      K3s的更多用法请参考:

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份