Skip to content

K8s1.30.1安装OpenKruise1.8.0

官方文档(除chart安装参数部分,其他建议跳过)

去看看

提前安装Helm

安装Helm配置国内源

下载Kruise1.8.0改

下载后上传到主节点

下载镜像文件

下载Helm文件

配置helm源

shell
helm repo add openkruise https://openkruise.github.io/charts/
helm repo update

集群准备

集群准备

安装开始

shell
docker load -i a1e4d262ffb0.tar

helm install kruise kruise-1.8.0.tgz

查看明细

shell
helm list

helm status kruise --show-resources

kubectl get pod -A

查看明细

测试yaml

yaml
apiVersion: v1 # K8s API 版本(核心组 v1)
kind: Namespace # 资源类型:命名空间
metadata:
  name: cutejava # 命名空间名称
  labels:
    appName: cutejava # 该命名空间的应用名称标签,用于选择器/统计
    env: production # 环境标签:生产环境
---
apiVersion: apps.kruise.io/v1beta1 # 使用 OpenKruise 的 StatefulSet 扩展 API 版本
kind: StatefulSet # 资源类型:有状态副本集(由 Kruise 扩展)
metadata:
  name: cutejava-production-sts # StatefulSet 名称
  namespace: cutejava # 资源所属命名空间
spec:
  podManagementPolicy: Parallel # Pod 管理策略:并行创建/删除(非默认 OrderedReady)
  replicas: 5 # 期望副本数
  selector:
    matchLabels:
      appName: cutejava # 用于匹配 Pod 的标签键 appName
      env: production # 用于匹配 Pod 的标签键 env
  serviceName: cutejava-production-headless # 用作 StatefulSet Headless Service 名称,为 Pod 提供稳定网络标识。DNS/主机名:pod-specific-string.serviceName.default.svc.cluster.local
  template:
    metadata:
      labels:
        appName: cutejava # Pod 标签:应用名称
        env: production # Pod 标签:环境
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: appName # 反亲和匹配键:appName
                      operator: In # 选择器操作符:包含
                      values:
                        - cutejava # 反亲和匹配值:cutejava
                topologyKey: failure-domain.beta.kubernetes.io/zone # 拓扑域:按可用区打散
              weight: 50 # 亲和权重:50(越大越优先)
            - podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: appName # 反亲和匹配键:appName
                      operator: In # 选择器操作符:包含
                      values:
                        - cutejava # 反亲和匹配值:cutejava
                topologyKey: kubernetes.io/hostname # 拓扑域:按节点主机名打散
              weight: 50 # 亲和权重:50
      containers:
        - image: registry.cn-shanghai.aliyuncs.com/odboy/ops:springboot-jdk11 # 容器镜像(含仓库/命名空间/标签)
          imagePullPolicy: IfNotPresent # 镜像拉取策略:本地不存在时再拉取
          name: cutejava-production-biz # 容器名称
          readinessProbe: # 就绪探针:用于流量接入前健康检查
            failureThreshold: 3 # 连续失败次数阈值(达到则判定不就绪)
            httpGet:
              path: /healthCheck/readiness # HTTP 探活路径
              port: 8000 # 探活端口
              scheme: HTTP # 协议:HTTP
            initialDelaySeconds: 30 # 容器启动后初始延迟秒数
            periodSeconds: 10 # 探测周期(秒)
            successThreshold: 1 # 连续成功次数阈值
            timeoutSeconds: 1 # 单次探测超时时间(秒)
          resources: # 资源配额与请求
            limits:
              cpu: 1 # CPU 上限:1 核(注意:等价于 1 = 1000m)
              memory: 1024Mi # 内存上限:1 GiB
            requests:
              cpu: 1 # CPU 请求:1 核
              memory: 1Gi # 内存请求:1 GiB
          terminationMessagePath: /dev/termination-log # 终止消息写入路径
          terminationMessagePolicy: File # 终止消息策略:从文件读取
          volumeMounts:
            - mountPath: /home/admin/cutejava/logs # 容器内挂载路径(日志目录)
              name: cutejava-volume # 关联卷名称
              subPath: logs # 在卷中的子路径,仅挂载该子目录
      dnsPolicy: ClusterFirst # DNS 策略:优先集群内部解析
      readinessGates:
        - conditionType: InPlaceUpdateReady # 额外就绪门:Kruise 原地升级就绪条件
      restartPolicy: Always # 重启策略:总是重启(对 Pod 模板生效)
      terminationGracePeriodSeconds: 30 # 优雅终止等待时间(秒)
      volumes:
        - emptyDir:
            sizeLimit: 10Gi # emptyDir 卷大小上限
          name: cutejava-volume # 卷名称,与 volumeMounts 对应
  updateStrategy:
    rollingUpdate:
      inPlaceUpdateStrategy:
        gracePeriodSeconds: 5 # 原地升级优雅等待时长(秒)
      maxUnavailable: 1 # 滚动更新期间允许不可用的 Pod 数量
      minReadySeconds: 0 # 新 Pod 就绪后最小就绪保持时间(秒)
      partition: 5 # 分区更新:从索引 >= 5 的 Pod 开始更新(0~replicas-1)
      podUpdatePolicy: InPlaceIfPossible # 优先原地更新,无法原地时再重建
    type: RollingUpdate # 更新策略:滚动更新

结果展示

结果展示1


结果展示2