本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

SUSE® Rancher Prime: K3s 集群配置参考

本节涵盖了在 Rancher 中可用于新建或现有 K3s Kubernetes 集群的配置选项。

概述

您可以通过两种方式配置 Kubernetes 选项:

  • Rancher UI:使用 Rancher UI 选择在设置 Kubernetes 集群时常见的自定义选项。

  • 集群配置文件:高级用户可以创建 K3s 配置文件,而不是使用 Rancher UI 选择集群的 Kubernetes 选项。使用配置文件可以让您在 K3s 安装期间设置任何可用的 选项

在 Rancher UI 中编辑集群

Rancher UI 提供两种编辑集群的方法:

  1. 通过表单。

  2. 通过 YAML。

使用表单编辑集群

该表单涵盖了集群最常用的选项。

要编辑您的集群,

  1. 单击 ☰ > 集群管理

  2. 转到您想要配置的集群并点击 ⋮ > 编辑配置

在 YAML 中编辑集群

有关 K3s 集群在 YAML 中可配置选项的完整参考,请参见 K3s 文档

要使用 YAML 编辑您的集群:

  1. 单击 ☰ > 集群管理

  2. 转到您想要配置的集群并点击 ⋮ > 以 YAML 编辑

  3. rkeConfig 指令下编辑 RKE 选项。

Rancher UI 中的配置选项

机器池配置

本小节涵盖通用机器池配置。有关特定基础设施提供商配置,请参见以下内容:

池名

机器池的名称。

机器数量

池中机器的数量。

角色

将 etcd、控制平面和工作节点角色分配给节点的选项。

高级

自动替换

节点在自动删除和替换之前可以不可达的时间量。

删除前排空

通过在节点删除之前驱逐所有 Pod 来启用节点排空。

Kubernetes 节点标签

向节点添加 标签 以帮助组织和对象选择。

有关标签语法要求的详细信息,请参见 Kubernetes 文档。

污点

向节点添加 污点,以防止 Pod 被调度到节点上或在节点上执行,除非 Pod 具有匹配的容忍。

集群配置

基础

Kubernetes 版本

安装在集群节点上的 Kubernetes 版本。

有关升级或回滚 Kubernetes 的详细信息,请参阅 升级 Kubernetes

Pod 安全准入配置模板

集群的默认 pod 安全准入配置模板

加密秘密

启用或禁用秘密加密的选项。启用时,秘密使用 AES-CBC 密钥进行加密。如果禁用,之前加密的秘密在再次启用加密之前不可读。有关详细信息,请参阅 K3s 文档

项目网络隔离

如果您的网络提供商允许项目网络隔离,您可以选择是否启用或禁用项目间通信。

SELinux

启用或禁用 SELinux 支持的选项。

CoreDNS

默认情况下, CoreDNS 被安装为默认 DNS 提供程序。如果未安装 CoreDNS,则必须自行安装其他 DNS 提供程序。有关详细信息,请参阅 K3s 文档

Klipper 服务 LB

启用或禁用 Klipper 服务负载均衡器的选项。有关详细信息,请参阅 K3s 文档

Traefik Ingress

启用或禁用 Traefik HTTP 反向代理和负载均衡器的选项。有关更多详细信息和配置选项,请参见 K3s 文档

本地存储

启用或禁用节点上的 本地存储 的选项。

指标服务器

启用或禁用 指标服务器 的选项。如果启用,请确保端口 10250 对入站 TCP 流量开放。

附加配置

作为 附加产品 管理的其他 Kubernetes 清单,在启动时应用于集群。有关详细信息,请参阅 K3s 文档

代理环境变量

K3s 代理 设置环境变量的选项。环境变量可以使用键值对设置。有关更多详细信息,请参阅 K3 文档

etcd

自动快照

启用或禁用定期 etcd 快照的选项。如果启用,用户可以配置快照的频率。有关细节,请参见 K3s 文档

指标

选择是否将 etcd 指标公开或仅在集群内暴露的选项。

网络

集群 CIDR

用于 Pod IP 的 IPv4/IPv6 网络 CIDR(默认值:10.42.0.0/16)。

示例值:

  • 仅支持 IPv4:10.42.0.0/16

  • 仅支持 IPv6:2001:cafe:42::/56

  • 双栈:10.42.0.0/16,2001:cafe:42::/56

有关双栈或仅支持 IPv6 网络的其他要求和限制,请参见以下资源:

您必须在首次创建集群时配置服务 CIDR。在集群启动后,您无法在现有集群上启用服务 CIDR。

服务 CIDR

用于服务 IP 的 IPv4/IPv6 网络 CIDR(默认值:10.43.0.0/16)。

示例值:

  • 仅支持 IPv4:10.43.0.0/16

  • 仅支持 IPv6:2001:cafe:43::/112

  • 双栈:10.43.0.0/16,2001:cafe:43::/112

有关双栈或仅支持 IPv6 网络的其他要求和限制,请参见以下资源:

您必须在首次创建集群时配置服务 CIDR。在集群启动后,您无法在现有集群上启用服务 CIDR。

集群 DNS

coredns 服务的 IPv4 集群 IP。应在您的服务 CIDR 范围内(默认值:10.43.0.10)。

集群域

选择集群的域名。默认值为 cluster.local

NodePort 服务端口范围

更改可用于 NodePort服务的端口范围的选项。默认值为 30000-32767

截断主机名

将主机名截断为 15 个字符或更少的选项。您只能在集群初始创建期间设置此字段。集群创建后,您无法启用或禁用 15 个字符的限制。

此设置仅影响机器提供的集群。由于自定义集群在其自己的节点创建过程中设置主机名,该过程发生在Rancher之外,因此此字段不限制自定义集群的主机名长度。

在集群中截断主机名可以提高与基于 Windows 的系统的兼容性。尽管 Kubernetes 允许主机名长度达到 63 个字符,但使用 NetBIOS 的系统将主机名限制为 15 个字符或更少。

TLS备用名称

在服务器 TLS 证书上添加主机名或 IPv4/IPv6 地址作为主题备用名称。

堆栈偏好

选择集群的网络堆栈。此选项影响:

  • 用于健康和就绪探测的组件地址,例如Calico、etcd、kube-apiserver、kube-scheduler、kube-controller-manager和kubelet。

  • 授权集群端点的`authentication-token-webhook-config-file`中的服务器URL。

  • 快照恢复期间 etcd 的 advertise-client-urls 设置。

选项为`ipv4`、ipv6dual

  • 当设置为`ipv4`时,集群使用`127.0.0.1`

  • 当设置为`ipv6`时,集群使用`[::1]`

  • 当设置为`dual`时,集群使用`localhost`

堆栈偏好必须与集群的网络配置匹配:

  • 将其设置为 ipv4 以用于仅支持 IPv4 的集群

  • 将其设置为 ipv6 以用于仅支持 IPv6 的集群

  • 将其设置为 dual 以用于双栈集群

确保环回地址配置正确,对于成功的集群配置至关重要。 有关更多信息,请参阅 节点要求 页面。

授权集群端点

授权集群端点可用于直接访问 Kubernetes API 服务器,无需通过 Rancher 进行通信。

有关授权集群端点的工作原理及其使用原因的更多详细信息,请参阅 架构部分。

我们建议使用负载均衡器与授权集群端点一起使用。有关详细信息,请参阅 推荐架构部分。

注册表

选择要从中拉取 Rancher 镜像的镜像储存库。有关更多详细信息和配置选项,请参见 K3s 文档

升级策略

控制平面并发性

选择可以同时升级多少个节点。可以是固定数量或百分比。

工作节点并发性

选择可以同时升级多少个节点。可以是固定数量或百分比。

排空节点(控制平面)

在升级之前选择从节点中去除所有 Pod 的选项。

排空节点(工作节点)

在升级之前选择从节点中去除所有 Pod 的选项。

高级

设置不同节点的 kubelet 选项。有关可用选项,请参阅 Kubernetes文档

集群配置文件参考

在YAML中编辑集群允许您设置在Rancher UI中的配置选项中已列出的配置,以及设置特定于Rancher的参数。

点击展开*示例集群配置文件片段*

apiVersion: provisioning.cattle.io/v1 kind:集群 spec: cloudCredentialSecretName: cattle-global-data:cc-fllv6 clusterAgentDeploymentCustomization: {} fleetAgentDeploymentCustomization: {} kubernetesVersion: v1.26.7+k3s1 localClusterAuthEndpoint: {} rkeConfig: additionalManifest: "" chartValues: {} etcd: snapshotRetention:5 snapshotScheduleCron:0 */5 * * * machineGlobalConfig: disable-apiserver: false disable-cloud-controller: false disable-controller-manager: false disable-etcd: false disable-kube-proxy: false disable-network-policy: false disable-scheduler: false etcd-expose-metrics: false kube-apiserver-arg: - audit-policy-file=/etc/rancher/k3s/user-audit-policy.yaml - audit-log-path=/etc/rancher/k3s/user-audit.logs profile: null secrets-encryption: false machinePools: - controlPlaneRole: true etcdRole: true machineConfigRef: kind:Amazonec2Config name: nc-test-pool1-pwl5h name: pool1 quantity:1 unhealthyNodeTimeout:0s workerRole: true machineSelectorConfig: - config: docker: false protect-kernel-defaults: false selinux: false machineSelectorFiles: - fileSources: - configMap: name: '' secret: name: audit-policy items: - key: audit-policy path: /etc/rancher/k3s/user-audit-policy.yaml machineLabelSelector: matchLabels: rke.cattle.io/control-plane-role: 'true' registries: {} upgradeStrategy: controlPlaneConcurrency:'1' controlPlaneDrainOptions: deleteEmptyDirData: true disableEviction: false enabled: false force: false gracePeriod: -1 ignoreDaemonSets: true ignoreErrors: false postDrainHooks: null preDrainHooks: null skipWaitForDeleteTimeoutSeconds:0 timeout:120 workerConcurrency:'1' workerDrainOptions: deleteEmptyDirData: true disableEviction: false enabled: false force: false gracePeriod: -1 ignoreDaemonSets: true ignoreErrors: false postDrainHooks: null preDrainHooks: null skipWaitForDeleteTimeoutSeconds:0 timeout:120

additionalManifest

指定要传递给控制平面节点的附加清单。

该值是一个字符串,将放置在目标节点的路径`/var/lib/rancher/k3s/server/manifests/rancher/addons.yaml`上。

示例:

additionalManifest: |-
  apiVersion: v1
  kind: Namespace
  metadata:
    name: name-xxxx

如果您想自定义系统图表,您应该使用下面描述的`chartValues`字段。

例如,使用 HelmChartConfig 通过 additionalManifest 自定义系统图表的替代方案可能会导致意外行为,因为同一图表可能有多个 HelmChartConfigs。

chartValues

指定 K3s 安装的系统图表的值。

有关 K3s 如何管理打包组件的更多信息,请参阅 K3s 文档

示例:

chartValues:
    chart-name:
        key: value

machineGlobalConfig

指定 K3s 配置。在此处进行的任何配置更改将适用于每个节点。在 k3s 独立版本 中可用的配置选项可以在此处应用。

示例:

machineGlobalConfig:
    etcd-arg:
        - key1=value1
        - key2=value2

为了方便在节点上提前放置文件,Rancher 期望在配置中包含以下值,而 K3s 期望将这些值输入为文件路径:

  • private-registry

  • flannel-conf

Rancher 将文件传送到目标节点的路径 /var/lib/rancher/k3s/etc/config-files/<option>,并在 K3s 服务器中设置适当的选项。

示例:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      private-registry: |
        mirrors:
          docker.io:
            endpoint:
              - "http://mycustomreg.com:5000"
        configs:
          "mycustomreg:5000":
            auth:
              username: xxxxxx # this is the registry username
              password: xxxxxx # this is the registry password

machineSelectorConfig

machineSelectorConfigmachineGlobalConfig 相同,除了可以在配置中指定 标签 选择器。该配置仅适用于匹配提供的标签选择器的节点。

允许多个 config 条目,每个条目指定自己的 machineLabelSelector。用户可以指定 matchExpressionsmatchLabels、两者或都不指定。省略此字段的 machineLabelSelector 部分的效果与将配置放入 machineGlobalConfig 部分相同。

示例:

machineSelectorConfig
  - config:
      config-key: config-value
    machineLabelSelector:
      matchExpressions:
        - key: example-key
          operator: string # Valid operators are In, NotIn, Exists and DoesNotExist.
          values:
            - example-value1
            - example-value2
      matchLabels:
        key1: value1
        key2: value2

machineSelectorFiles

此功能在 Rancher v2.7.2 及更高版本中可用。

将文件传送到节点,以便在启动 K3s 服务器或代理进程之前文件可以就位。 文件的内容是从 Secret 或 ConfigMap 中检索的。目标节点通过 machineLabelSelector 进行过滤。

示例:

machineSelectorFiles:
  - fileSources:
      - secret:
          items:
            - key: example-key
              path: path-to-put-the-file-on-nodes
              permissions: 644 (optional)
              hash: base64-encoded-hash-of-the-content (optional)
          name: example-secret-name
    machineLabelSelector:
      matchExpressions:
        - key: example-key
          operator: string # Valid operators are In, NotIn, Exists and DoesNotExist.
          values:
            - example-value1
            - example-value2
      matchLabels:
        key1: value1
        key2: value2
  - fileSources:
      - configMap:
          items:
            - key: example-key
              path: path-to-put-the-file-on-nodes
              permissions: 644 (optional)
              hash: base64-encoded-hash-of-the-content (optional)
          name: example-configmap-name
    machineLabelSelector:
      matchExpressions:
        - key: example-key
          operator: string # Valid operators are In, NotIn, Exists and DoesNotExist.
          values:
            - example-value1
            - example-value2
      matchLabels:
        key1: value1
        key2: value2

秘密或配置映射必须满足以下要求:

  1. 它必须位于 fleet-default 名称空间中,其中存在 Cluster 对象。

  2. 它必须具有注释 rke.cattle.io/object-authorized-for-clusters: cluster-name1,cluster-name2,允许目标集群使用它。

Rancher Dashboard 提供了一个易于使用的表单,用于创建 Secret 或 ConfigMap。

示例:

apiVersion: v1
data:
  audit-policy: >-
    IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
  annotations:
    rke.cattle.io/object-authorized-for-clusters: cluster1
  name: name1
  namespace: fleet-default