标签 KubeSphere 下的文章

本文在鲲鹏920openEuler,从0开始使用Containerd部署k8s1.30.13+Ks。

1.说明

关于kt

kt是基于kk二次开发的产物,具备kk的所有功能。二开主要为适配信创国产化环境、简化arm部署过程和国产化环境离线部署。支持arm64amd64架构国产操作系统,已适配芯片+操作系统 如下。

kt新增功能点

  • 适配arm架构harbor和支持,部署体验与X86一样简单。
  • 离线环境部署增强。常用国际和国产操作系统依赖,内置到安装包中。已适配芯片和操作系统如下

    • ./kt init-os 一条命令完成操作系统依赖安装和初始化操作。
    • CPU:鲲鹏、飞腾、海光、兆芯、intel、amd等。
    • OS:Centos、Rocky Linux、Ubuntu、Debian、银河麒麟V10、麒麟V11、麒麟国防版、麒麟信安、中标麒麟V7、统信UOS、华为欧拉、移动大云、阿里龙蜥、TencenOS等。
  • 支持开启防火墙,只暴露30000-32767端口,其他k8s端口添加到节点白名单。

    • ./kt firewall 一条命令自动获取节点信息开白名单和防火墙。

kt版本更新和下载地址

  • kt: kt
  • 关注我不迷路

2.环境准备

服务器基本信息

<!-- 这是一张图片,ocr 内容为: -->

主机名架构OS配置IP
masterarm64openEuler2核4G192.168.0.101
nodearm64openEuler2核4G192.168.0.133
harborarm64openEuler2核4G192.168.0.232

2.1 上传离线制品

操作系统不需要安装docker,不需要设置selinux,swap等操作,全新的操作系统即可。

将离线制品、配置文件、kt和sh脚本上传至服务器其中一个节点(本文以master为例),后续在该节点操作创建集群。本文使用kt:3.1.13.1版本

<!-- 这是一张图片,ocr 内容为: -->

2.2 修改配置文件

根据实际服务器信息,配置到生成的config-sample.yaml

kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: master, address: 192.168.0.101, internalAddress: 192.168.0.101, user: root, password: "123213", arch: "arm64"}
  - {name: node1, address: 192.168.0.133, internalAddress: 192.168.0.133, user: root, password: "123213", arch: "arm64"}
  - {name: harbor, address: 192.168.0.232, internalAddress: 192.168.0.232, user: root, password: "123213", arch: "arm64"}
  roleGroups:
    etcd:
    - master
    control-plane:
    - master
    worker:
    - node1
    # 如需使用 kt 自动部署镜像仓库,请设置该主机组 (建议仓库与集群分离部署,减少相互影响)
    # 如果需要部署 harbor 并且 containerManager 为 containerd 时,由于部署 harbor 依赖 docker,建议单独节点部署 harbor
    registry:
    - harbor
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers 
    internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.30.14
    clusterName: cluster.local
    autoRenewCerts: true
    containerManager: containerd
  etcd:
    type: kubekey
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    type: harbor
    registryMirrors: []
    insecureRegistries: []
    privateRegistry: "dockerhub.kubekey.local"
    namespaceOverride: "kubesphereio"
    auths: # if docker add by `docker login`, if containerd append to `/etc/containerd/config.toml`
      "dockerhub.kubekey.local":
        username: "admin"
        password: Harbor@123 # 此处可自定义,kk3.1.8新特性
        skipTLSVerify: true # Allow contacting registries over HTTPS with failed TLS verification.
        plainHTTP: false # Allow contacting registries over HTTP.
        certsPath: "/etc/docker/certs.d/dockerhub.kubekey.local"
  addons: []

2.3 系统初始化

解压kt-centos.tar.gz文件后执行./kt init-os -f config-sample.yaml 已适配操作系统和架构见1.说明

该命令kt会根据配置文件自动判断操作系统和架构以完成所有节点的初始化配置和依赖安装。

<!-- 这是一张图片,ocr 内容为: -->

3 创建 Harbor私有仓库

3.1 创建镜像仓库

./kt init registry -f config-sample.yaml -a artifact-arm-k8s13014-ks3.4.1.tar.gz

此命令会在harbor节点自动安装dockerdocker-compose

<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

3.2 创建harbor项目

<font style="background-color:rgb(255,245,235);">说明:</font>

<font style="background-color:rgb(255,245,235);">Harbor 管理员账号:</font><font style="background-color:rgb(255,245,235);">admin</font><font style="background-color:rgb(255,245,235);">,密码:</font><font style="background-color:rgb(255,245,235);">Harbor@123</font><font style="background-color:rgb(255,245,235);">。密码同步使用配置文件中的对应password</font>

<font style="background-color:rgb(255,245,235);">harbor 安装文件在 /opt/harbor<font style="background-color:rgb(255,245,235);"> 目录下,可在该目录下对 harbor 进行运维。</font>

创建 Harbor 项目

chmod +x create_project_harbor.sh && ./create_project_harbor.sh

<!-- 这是一张图片,ocr 内容为: -->

4 创建k8s和KubeSphere

./kt create cluster -f config-sample.yaml -a artifact-arm-k8s13014-ks3.4.1.tar.gz

此命令kt会自动将离线制品中的镜像推送到harbor 私有仓库

执行后会有如下提示,输入yes/y继续执行

<!-- 这是一张图片,ocr 内容为: -->

等待一段时间,直至出现熟悉的等待安装完成的小箭头>>--->

<!-- 这是一张图片,ocr 内容为: -->

期间可以另开一个窗口用以下命令查看部署日志

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

继续等待一段时间,可以看到在内核3.10.0上面使用containerd成功部署了1.30.14版本+ks

<!-- 这是一张图片,ocr 内容为: -->

5 验证

<!-- 这是一张图片,ocr 内容为: -->

ps:default-http-backend那个pod显示:ImagePullBackOff,没啥用,不需要理会。

登录页面

<!-- 这是一张图片,ocr 内容为: -->

集群管理

<!-- 这是一张图片,ocr 内容为: -->

集群节点

<!-- 这是一张图片,ocr 内容为: -->

监控告警

<!-- 这是一张图片,ocr 内容为: -->

集群信息

<!-- 这是一张图片,ocr 内容为: -->

节点情况

<!-- 这是一张图片,ocr 内容为: -->

配置文件默认只安装了监控,如果需要安装其他组件,可以自行在自定义资源中开启

<!-- 这是一张图片,ocr 内容为: -->

Centos虽然已经停止维护了,而且内核也非常低,耐不住国内大环境很多公司还是一直在用它。时不时见到有人想要在centos上面部署k8s1.23版本,本文将以centos 7为例,从0开始搭建k8s+ks集群。

1.说明

关于kt

kt是基于kk二次开发的产物,具备kk的所有功能。二开主要为适配信创国产化环境、简化arm部署过程和国产化环境离线部署。支持arm64amd64架构国产操作系统,已适配芯片+操作系统 如下。

kt新增功能点

  • 适配arm架构harbor和支持,部署体验与X86一样简单。
  • 离线环境部署增强。常用国际和国产操作系统依赖,内置到安装包中。已适配芯片和操作系统如下

    • ./kt init-os 一条命令完成操作系统依赖安装和初始化操作。
    • CPU:鲲鹏、飞腾、海光、兆芯、intel、amd等。
    • OS:Centos、Rocky Linux、Ubuntu、Debian、银河麒麟V10、麒麟V11、麒麟国防版、麒麟信安、中标麒麟V7、统信UOS、华为欧拉、移动大云、阿里龙蜥、TencenOS等。
  • 支持开启防火墙,只暴露30000-32767端口,其他k8s端口添加到节点白名单。

    • ./kt firewall 一条命令自动获取节点信息开白名单和防火墙。

kt版本更新和下载地址

  • kt:kt
  • 关注我不迷路

2.环境准备

服务器基本信息

主机名架构OS配置IP
all-in-onex86_64Centos 74核8G192.168.85.164

2.1 上传离线制品

操作系统不需要安装docker,不需要设置selinux,swap等操作,全新的操作系统即可。

将离线制品、配置文件、kt和sh脚本上传至服务器其中一个节点(本文以master为例),后续在该节点操作创建集群。本文使用kt:3.1.12-centos版本

2.2 修改配置文件

根据实际服务器信息,配置到生成的config-sample.yaml

kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: node1, address: 192.168.85.164, internalAddress: 192.168.85.164, user: root, password: "123123"}
  roleGroups:
    etcd:
    - node1
    control-plane:
    - node1
    worker:
    - node1
    # 如需使用 kk 自动部署镜像仓库,请设置该主机组 (建议仓库与集群分离部署,减少相互影响)
    # 如果需要部署 harbor 并且 containerManager 为 containerd 时,由于部署 harbor 依赖 docker,建议单独节点部署 harbor
    registry:
    - node1
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers 
    internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.23.17
    clusterName: cluster.local
    autoRenewCerts: true
    containerManager: docker
  etcd:
    type: kubekey
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    type: harbor
    registryMirrors: []
    insecureRegistries: []
    privateRegistry: "dockerhub.kubekey.local"
    namespaceOverride: "kubesphereio"
    auths: # if docker add by `docker login`, if containerd append to `/etc/containerd/config.toml`
      "dockerhub.kubekey.local":
        username: "admin"
        password: Harbor@123 # 此处可自定义,kk3.1.8新特性
        skipTLSVerify: true # Allow contacting registries over HTTPS with failed TLS verification.
        plainHTTP: false # Allow contacting registries over HTTP.
        certsPath: "/etc/docker/certs.d/dockerhub.kubekey.local"
  addons: []
  ---

2.3 系统初始化

解压kt-centos.tar.gz文件后执行./kt init-os -f config-sample.yaml 已适配操作系统和架构见1.说明

该命令kt会根据配置文件自动判断操作系统和架构以完成所有节点的初始化配置和依赖安装。

3 创建 Harbor私有仓库

3.1 创建镜像仓库

./kt init registry -f config-sample.yaml -a artifact-x86-k8s12317-ks3.4.1.tar.gz

此命令会在harbor节点自动安装dockerdocker-compose

3.2 创建harbor项目

<font style="background-color:rgb(255,245,235);">说明:</font>

<font style="background-color:rgb(255,245,235);">Harbor 管理员账号:</font><font style="background-color:rgb(255,245,235);">admin</font><font style="background-color:rgb(255,245,235);">,密码:</font><font style="background-color:rgb(255,245,235);">Harbor@123</font><font style="background-color:rgb(255,245,235);">。密码同步使用配置文件中的对应password</font>

<font style="background-color:rgb(255,245,235);">harbor 安装文件在 </font><font style="background-color:rgb(255,245,235);">/opt/harbor</font><font style="background-color:rgb(255,245,235);"> 目录下,可在该目录下对 harbor 进行运维。</font>

创建 Harbor 项目

chmod +x create_project_harbor.sh && ./create_project_harbor.sh

4 创建k8s和KubeSphere

./kt create cluster -f config-sample.yaml -a artifact-x86-k8s12317-ks3.4.1.tar.gz

此命令kt会自动将离线制品中的镜像推送到harbor 私有仓库

执行后会有如下提示,输入yes/y继续执行

等待一段时间,直至出现熟悉的等待安装完成的小箭头>>--->

期间可以另开一个窗口用以下命令查看部署日志

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

继续等待一段时间最终可以看到安装成功的消息

5 验证

登录页面

集群管理

监控告警

配置文件默认只安装了监控,如果需要安装其他组件,可以自行在自定义资源中开启

云原生热点

Agones 1.54.0 版本发布:计数器能力增强,GKE Autopilot 直通通信正式稳定

Agones 是一个开源的 K8s 原生游戏服务器托管与扩展框架,用于在 K8s 集群上运行、管理和自动扩缩专用游戏服务器资源。它通过自定义资源(如 GameServer、Fleet 等)和控制器,帮助开发者高效管理大规模实时游戏服务器生命周期与调度。

1.54.0 版本新增对 K8s v1.34 的支持,并强化了在 GKE Autopilot 场景下的端口直通能力;同时引入更完善的 Counter 状态工具,提升服务器状态可观测性,简化自动扩缩配置,并修复 Init Container 相关问题,整体提升了稳定性、易用性和云托管兼容能力。

Kube-OVN v1.15 发布:新年新版,网络功能再进化

Kube-OVN 是一个基于 OVN/Open vSwitch 的 K8s 云原生网络插件,将 SDN 虚拟网络能力引入容器网络,支持静态 IP 分配、VPC 多租户、灵活网络策略等丰富功能,提升集群网络可控性与性能。

Kube-OVN v1.15 近日成功发布,新版本重点增强网络灵活性与稳定性,支持更精细的 IPPool 绑定与管理,升级 OVS 和 OVN 核心组件,提升性能与安全性,同时强化监控与健康检查能力,并清理遗留代码,进一步提升生产环境下的可运维性与可靠性。

技术实践

文章推荐

K8s v1.35:云控制器管理器中的基于监视的路由协调

本文介绍了 K8s v1.35 在 Cloud Controller Manager(CCM)的路由控制器中新增特性门控 CloudControllerManagerWatchBasedRoutesReconciliation:将原先按固定间隔轮询对账,改为基于 informer 的 watch 机制,在节点增删或 .spec.podCIDRs.status.addresses 变化时触发对账,并保留 12–24 小时随机周期的补充对账,从而在路由无变化时显著减少对云厂商的无谓 API 请求,同时不改变既有对账逻辑,降低行为变化风险。

使用 clientcmd 进行统一的 API 服务器访问

本文介绍了 K8s 在 v1.35 中针对 clientcmd 访问 API Server 的改进(Uniform API server access using clientcmd),强调统一和简化使用 kubeconfig/clientcmd 与 API Server 交互的方式,使客户端(如 kubectl 或程序库)通过一致的配置和流程发现 API Server 地址、凭据与认证细节,从而减少重复配置和访问复杂度,提高与集群 API 交互的可靠性和开发效率,同时保持与现有访问机制兼容。

K8s 事故中惨痛教训揭示的隐藏不良实践

本文介绍了一些在生产事故中才暴露出来的 K8s 错误实践及其应避免的方式。文章由一位 SRE 工程师分享常见但常被忽视的错误做法,如错误配置探针/资源请求、缺乏网络策略、过度权限设置等,这些隐性坏习惯在集群运行和故障时会引发严重问题。作者结合实际事件,提出改善建议以提升集群稳定性与安全性,对于 K8s 生产环境的运维和 SRE 团队具有重要参考价值。

开源项目推荐

AIBrix

AIBrix 是一个开源的云原生大规模 LLM 推理基础设施框架,用于在 K8s 上高效部署、管理和扩展大型语言模型推理服务,支持路由、自动扩缩、分布式推理和 KV 缓存等关键能力,帮助企业构建可扩展、高性价比的生成式 AI 推理平台。它与 vLLM 紧密集成,适合生产环境和大规模应用场景。

Kyverno

Kyverno 是一个开源的 K8s 原生策略引擎,用于通过“策略即代码”(Policy as Code)管理集群中的资源安全、合规和自动化。它允许你用熟悉的 K8s YAML 定义策略,验证(validate)、变更(mutates)、生成(generate) 和清理(cleanup) 资源,增强安全性和治理,还支持镜像签名验证等高级用例,非常适合平台工程、DevOps 和安全团队。

vcluster

vcluster 是一个开源的虚拟 K8s 集群解决方案,它在一个真实集群内创建轻量级、隔离的虚拟集群实例。每个虚拟集群拥有独立的 API 和控制平面,但共享底层节点资源,启动快、资源占用少、权限隔离好。适合多租户开发测试、CI/CD 环境和平台自助服务等场景。

SpinKube

SpinKube 是一个开源的 WebAssembly(Wasm)无服务器运行时平台,简化在 K8s 上开发、部署与管理 Wasm 工作负载。它结合 Spin Operator、containerd shim 和 Runtime Class 管理器,可让轻量级、快速启动的 Wasm 应用像容器一样运行,并集成自动扩缩与 Kubernetes 原生机制。该项目已成为 CNCF Sandbox 成员,适合构建高效、可扩展的云原生服务。

关于KubeSphere

KubeSphere (https://kubesphere.io)是在 Kubernetes 之上构建的容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。

KubeSphere 已被 Aqara 智能家居、本来生活、东方通信、微宏科技、东软、新浪、三一重工、华夏银行、四川航空、国药集团、微众银行、紫金保险、去哪儿网、中通、中国人民银行、中国银行、中国人保寿险、中国太平保险、中国移动、中国联通、中国电信、天翼云、中移金科、Radore、ZaloPay 等海内外数万家企业采用。KubeSphere 提供了开发者友好的向导式操作界面和丰富的企业级功能,包括 Kubernetes 多云与多集群管理、DevOps (CI/CD)、应用生命周期管理、边缘计算、微服务治理 (Service Mesh)、多租户管理、可观测性、存储与网络管理、GPU support 等功能,帮助企业快速构建一个强大和功能丰富的容器云平台。