通过集群 v1beta1 API,您可以基于默认的 ClusterClass 定义置备集群。
ClusterClass API v1beta1
Kubernetes 集群 API 是一套用于提供 Kubernetes 集群的声明式置备、升级和操作的工具。ClusterClass 是集群 API 的升级版,可用于定义管理集群集生命周期的模板。TKG 服务 使用 v1beta1 API 支持 ClusterClass。
TKG 服务 附带一个名为 tanzukubernetescluster
的默认 ClusterClass 定义。tanzukubernetescluster
ClusterClass 为使用 v1beta API 创建集群提供模板。tanzukubernetescluster
ClusterClass 在所有用户命名空间中均可用。要基于此 ClusterClass 创建集群,请在集群规范中引用它。有关指导,请参阅 v1beta 示例。
默认的 ClusterClass tanzukubernetescluster
默认的 tanzukubernetescluster
ClusterClass 不可改变。可能会在每次发布 TKG Service 时对它进行更新。
要查看 TKG Service 实例附带的默认 tanzukubernetescluster
ClusterClass,请完成以下步骤:
- 登录到 主管。
kubectl vsphere login --server=IP-or-FQDN --vsphere-username [email protected]
- 将上下文切换到置备了 TKGS 集群的 vSphere 命名空间。
kubeclt config use-context VSPEHRE-NS
- 获取默认
tanzukubernetescluster
ClusterClass。kubectl get clusterclass tanzukubernetescluster -o yaml
- (可选)可以将默认 ClusterClass 的输出写入名为 tkc-dcc.yaml 的文件。
kubectl get clusterclass tanzukubernetescluster -o yaml > tkc-dcc.yaml
用于自定义集群的 ClusterClass 变量
您可以使用变量基于 tanzukubernetescluster
ClusterClass 自定义一个集群。变量使用名称-值对进行定义。语法必须符合 openAPIV3Schema 的要求。
- 虚拟机类
- 存储类
- 代理
- TLS 证书
- SSH 密钥
以下部分列出了默认 tanzukubernetescluster
ClusterClass 可用的所有变量。
key-name
)、下划线(如
KEY_NAME
)或点(如
key.name
)。不能在密钥名称中使用空格。
clusterEncryptionConfigYaml
使用 clusterEncryptionConfigYaml
变量配置集群加密。
- clusterEncryptionConfigYaml
- 一个字符串,表示提供加密配置详细信息的 YAML 文件。
controlPlaneCertificateRotation
controlPlaneCertificateRotation
变量配置系统,在控制平面节点的 TLS 证书过期之前触发证书推出,从而轮换这些证书。控制平面证书轮换可用于所有新的和现有的控制平面节点。
- controlPlaneCertificateRotation
-
布尔值,用于激活该功能以及过期前轮换证书的天数。有关详细信息,请参见
使用 Kubeadm Control Plane 提供程序自动轮换证书。
... variables: - name: controlPlaneCertificateRotation value: activate: true daysBefore: 90
controlPlaneVolumes
controlPlaneVolumes
变量为控制平面节点配置持久卷。
- controlPlaneVolumes
-
一个可选对象数组,其中每个对象都包括
name
、storageClass
和mountPath
(均为字符串),以及一个可选的capacity
对象,其中包含storage
字符串。... variables: #controlPlaneVolumes is an optional set of PVCs to create and #attach to each node - name: controlPlaneVolumes value: #name of the PVC to be used as the suffix (node.name) - name: NAME #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /dir/path #storageClass is the storage class to use for the PVC storageClass: tkgs-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
defaultRegistrySecret
defaultRegistrySecret
变量为集群配置默认的容器注册表。
- defaultRegistrySecret
- 一个对象,此对象包含默认容器注册表的公钥、证书名称和命名空间。
defaultStorageClass
使用 defaultStorageClass
变量为集群配置默认存储类。
- defaultStorageClass
-
一个字符串,此字符串用于标识要用作默认存储类的存储类,通常,Helm 图表和 Tanzu 软件包等应用程序需要它。
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
使用 extensionCert
变量配置 TLS 证书。
- extensionCert
-
一个对象,此对象包含具有
name
和key
字符串的contentSecret
对象。contentSecret
引用为 TLS 证书创建的 Kubernetes 密钥对象。... variables: #extensionCert specifies the cert and key for Extensions Controller #self-signed issuer and certificates must be created in advance - name: extensionCert value: contentSecret: #name specifies the name of secret name: string #key specifies the content of tls\.crt in the secret's data map key: string
kubeAPIServerFQDNs
使用 kubeAPIServerFQDNs
变量配置具有 FQDN 的集群。
nodePoolLabels
使用 nodePoolLabels
变量为工作节点配置标签。
- nodePoolLabels
- 一个或多个对象组成的数组,其中每个对象都包含一个键/值(均为字符串)对。
nodePoolTaints
使用 nodePoolTaints
变量将污点应用于工作节点。
- nodePoolTaints
- 一个对象数组,其中每个对象都包含一个适用于工作节点的 污点。
nodePoolVolumes
使用 nodePoolVolumes
变量为集群节点指定持久卷。
- nodePoolVolumes
-
一个可选对象数组,其中每个对象都包括
name
、storageClass
和mountPath
(均为字符串),以及一个可选的capacity
对象,其中包含storage
字符串。... variables: #nodePoolVolumes is an optional set of PVCs to create and #attach to each node; use for high-churn components like containerd - name: nodePoolVolumes value: | #name of the PVC to be used as the suffix (node.name) - name: etcd #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /var/lib/containerd #storageClass is the storage class to use for the PVC storageClass: tkgs-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
ntp
使用 ntp
变量为集群配置 NTP 服务器。
- ntp
- 一个字符串,表示 NTP 服务器的 FQDN 或 IP 地址。
podSecurityStandard
podSecurityStandard
变量配置集群范围 Pod 安全。
- podSecurityStandard
-
对于 TKr v1.26 及更高版本,默认情况下,将使用注释标签在命名空间级别强制执行 Pod 安全 (PSA) 限制。请参见为 TKR 1.25 及更高版本配置 PSA。
或者,也可以在置备或更新 v1beta1 集群时使用
podSecurityStandard
变量来配置集群范围 PSA。podSecurityStandard
变量可按以下方式实施:... variables: - name: podSecurityStandard value: deactivated: DEACTIVATED audit: AUDIT-PROFILE enforce: ENFORCE-PROFILE warn: WARN-PROFILE auditVersion: AUDIT-VERSION enforceVersion: ENFORCE-VERSION warnVersion: WARN-VERSION exemptions: namespaces: [EXEMPT-NS]
其中:- DEACTIVATED 的值为
false
(默认值)表示应用集群范围 PSA;值为true
则表示不应用。 - *-PROFILE 值表示每种模式的 PSA 配置文件,可以是
"privileged"
、"baseline"
或"restricted"
(默认值)。 - *-VERSION 值表示每种模式的 Kubernetes 版本,例如
"v1.26"
。值"latest"
为默认值。 - EXEMPT-NS 值表示要从 PSA 控制中排除的命名空间的逗号分隔列表。
注: 系统命名空间将从 Pod 安全措施中排除,包括 kube-system、tkg-system 和 vmware-system-cloud-provider。如果不实施
podSecurityStandard
变量,将保留默认 PSA 行为。如果集群规范中包含podSecurityStandard
变量,变量设置将施加控制,包括其默认值,除非您覆盖默认值。以下示例显示了默认值。... variables: - name: podSecurityStandard value: enforce: "restricted" enforce-version: "latest"
以下示例提供了审核日志和警告,用于确定哪些工作负载未遵循当前的 Pod 强化最佳做法,而是仅强制执行限制性最低的策略(“基准”,这会阻止已知的特权提升)。... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "baseline"
以下示例强制执行限制策略,但在特定命名空间上除外。... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "restricted" exemptions: namesaces: ["privileged-workload-ns"]
以下示例仅对特定 TKr 版本强制执行限制。... variables: - name: podSecurityStandard value: audit-version: "v1.26" warn-version: "v1.26" enforce-version: "v1.26"
有关更多示例,请参见 Kubernetes 文档中的 Pod 安全标准。
- DEACTIVATED 的值为
代理
使用 proxy
变量为集群配置代理服务器。
- 代理
- 一个对象,其参数可引用出站集群连接的代理服务器。
storageClass
使用 storageClass
变量为集群配置存储类。
- storageClass
-
一个字符串,此字符串是已分配给置备了 TKG 集群的
vSphere 命名空间 的 vSphere 存储配置文件的名称。
... variables: - name: storageClass value: tkgs-storage-profile
storageClasses
使用 storageClasses
变量为集群配置存储类阵列。
- storageClasses
-
一个或多个字符串组成的数组,每个字符串都是已分配给置备了 TKG 集群的
vSphere 命名空间 的 vSphere 存储配置文件的名称。
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
使用 TKR_DATA
变量指定 TKR 信息。
- TKR_DATA
- 用于指定 TKR 版本和其他详细信息的对象。
trust
使用 trust
变量为集群指定一个或多个可信 CA 证书。
- trust
- 一个对象,用于向集群添加 TLS 证书(其他 CA 证书或终端证书)。
user
使用 user
变量指定集群用户凭据。
- user
- 一个对象,此对象包含具有名称和密钥字符串以及 sshAuthorizedKey 字符串的 passwordSecret 对象。您可以使用此变量将用户的 SSH 密钥添加到集群节点中以进行远程 SSH 访问。
vmClass
使用 vmClass
变量为集群节点配置虚拟机类。
- vmClass
- 一个必需字符串,此字符串将映射到与置备了 TKG 集群的 vSphere 命名空间 绑定的虚拟机类的名称。