|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
SUSE® Rancher Prime: K3s 集群配置参考
本节涵盖了在 Rancher 中可用于新建或现有 K3s Kubernetes 集群的配置选项。
概述
您可以通过两种方式配置 Kubernetes 选项:
-
Rancher UI:使用 Rancher UI 选择在设置 Kubernetes 集群时常见的自定义选项。
-
集群配置文件:高级用户可以创建 K3s 配置文件,而不是使用 Rancher UI 选择集群的 Kubernetes 选项。使用配置文件可以让您在 K3s 安装期间设置任何可用的 选项。
在 Rancher UI 中编辑集群
Rancher UI 提供两种编辑集群的方法:
-
通过表单。
-
通过 YAML。
在 YAML 中编辑集群
有关 K3s 集群在 YAML 中可配置选项的完整参考,请参见 K3s 文档。
要使用 YAML 编辑您的集群:
-
单击 ☰ > 集群管理。
-
转到您想要配置的集群并点击 ⋮ > 以 YAML 编辑。
-
在
rkeConfig指令下编辑 RKE 选项。
Rancher UI 中的配置选项
机器池配置
本小节涵盖通用机器池配置。有关特定基础设施提供商配置,请参见以下内容:
池名
机器池的名称。
机器数量
池中机器的数量。
角色
将 etcd、控制平面和工作节点角色分配给节点的选项。
高级
污点
向节点添加 污点,以防止 Pod 被调度到节点上或在节点上执行,除非 Pod 具有匹配的容忍。
集群配置
基础
Pod 安全准入配置模板
集群的默认 pod 安全准入配置模板。
加密秘密
启用或禁用秘密加密的选项。启用时,秘密使用 AES-CBC 密钥进行加密。如果禁用,之前加密的秘密在再次启用加密之前不可读。有关详细信息,请参阅 K3s 文档。
SELinux
启用或禁用 SELinux 支持的选项。
本地存储
启用或禁用节点上的 本地存储 的选项。
指标服务器
启用或禁用 指标服务器 的选项。如果启用,请确保端口 10250 对入站 TCP 流量开放。
网络
集群 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。 |
NodePort 服务端口范围
更改可用于 NodePort服务的端口范围的选项。默认值为 30000-32767。
截断主机名
将主机名截断为 15 个字符或更少的选项。您只能在集群初始创建期间设置此字段。集群创建后,您无法启用或禁用 15 个字符的限制。
此设置仅影响机器提供的集群。由于自定义集群在其自己的节点创建过程中设置主机名,该过程发生在Rancher之外,因此此字段不限制自定义集群的主机名长度。
在集群中截断主机名可以提高与基于 Windows 的系统的兼容性。尽管 Kubernetes 允许主机名长度达到 63 个字符,但使用 NetBIOS 的系统将主机名限制为 15 个字符或更少。
堆栈偏好
选择集群的网络堆栈。此选项影响:
-
用于健康和就绪探测的组件地址,例如Calico、etcd、kube-apiserver、kube-scheduler、kube-controller-manager和kubelet。
-
授权集群端点的`authentication-token-webhook-config-file`中的服务器URL。
-
快照恢复期间 etcd 的
advertise-client-urls设置。
选项为`ipv4`、ipv6、dual:
-
当设置为`ipv4`时,集群使用`127.0.0.1`
-
当设置为`ipv6`时,集群使用`[::1]`
-
当设置为`dual`时,集群使用`localhost`
堆栈偏好必须与集群的网络配置匹配:
-
将其设置为
ipv4以用于仅支持 IPv4 的集群 -
将其设置为
ipv6以用于仅支持 IPv6 的集群 -
将其设置为
dual以用于双栈集群
|
确保环回地址配置正确,对于成功的集群配置至关重要。 有关更多信息,请参阅 节点要求 页面。 |
注册表
选择要从中拉取 Rancher 镜像的镜像储存库。有关更多详细信息和配置选项,请参见 K3s 文档。
高级
设置不同节点的 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 通过 |
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
machineSelectorConfig 与 machineGlobalConfig 相同,除了可以在配置中指定 标签 选择器。该配置仅适用于匹配提供的标签选择器的节点。
允许多个 config 条目,每个条目指定自己的 machineLabelSelector。用户可以指定 matchExpressions、matchLabels、两者或都不指定。省略此字段的 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
秘密或配置映射必须满足以下要求:
-
它必须位于
fleet-default名称空间中,其中存在 Cluster 对象。 -
它必须具有注释
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