查看和更新自动管理的软件包配置

此主题介绍了如何查看从 tanzu-core 存储库安装的自动管理软件包的配置。此外,还列出了可以在创建集群后更新的 Antrea、Pinniped、Calico、vSphere CPI 和vSphere CSI 配置设置。有关故障排除信息,请参见下面的更新软件包配置并进行故障排除

查看软件包配置

自动管理的软件包位于 tanzu-core 存储库中,其中包含支持基本集群功能的组件,例如 Antrea 或 Calico 容器网络接口以及 Pinniped 身份验证组件。在某些情况下,内部 Tanzu Kubernetes Grid 和 Kubernetes 资源将这些组件称为 addons

要查看自动管理的软件包及其包含的附加模块组件的配置,您可以:

  • 通过对管理集群运行 kubectl get secret CLUSTER-NAME-PACKAGE-NAME-addon -n CLUSTER-NAMESPACE 命令,检索已安装附加模块组件的 Kubernetes 密钥。其中:

    • CLUSTER-NAME 是目标集群的名称。如果要检索工作负载集群中安装的附加模块组件的密钥,CLUSTER-NAME 是工作负载集群的名称。
    • PACKAGE-NAME 是软件包的名称。
    • CLUSTER-NAMESPACE 是目标集群的命名空间。
  • projects.registry.vmware.com/tkg/packages/core 下载软件包配置文件。

例如,要查看 Antrea 的配置,请执行以下操作:

  • 通过对管理集群运行以下命令来检索 Antrea 密钥:

    kubectl get secret CLUSTER-NAME-antrea-addon -n CLUSTER-NAMESPACE
    
  • 下载 Antrea 软件包配置文件:

    1. 在用于创建集群的 Tanzu Kubernetes 版本 (TKr) 中找到 antrea 的版本标记。您可以通过对管理集群运行 kubectl get tkr 命令来检索 TKr。

      1. 运行 kubectl get clusters CLUSTER-NAME -n CLUSTER-NAMESPACE --show-labels

      2. 在输出中,找到 tanzuKubernetesRelease 的值。例如,tanzuKubernetesRelease=v1.23.10---vmware.1-tkg.1

      3. 运行 kubectl get tkr TKR-VERSION,其中 TKR-VERSION 是上面检索的值。例如:

        kubectl get tkr v1.23.10---vmware.1-tkg.1 -o yaml
        
      4. 在输出中,在 packages/core/antrea 下找到版本标记。

        或者,也可以通过在 ~/.config/tanzu/tkg/bom/YOUR-TKR-BOM-FILE 中查看 TKr 找到版本标记。

    2. 下载软件包配置文件。例如:

      imgpkg pull -b projects.registry.vmware.com/tkg/packages/core/antrea:v1.2.3_vmware.4-tkg.1-advanced -o antrea
      
    3. 导航到 antrea 并查看文件。

要了解有关 Antrea 容器网络连接功能的更多信息,请参见 VMware Container Networking with Antrea 1.4.0 发行说明。要了解有关将 Antrea 容器集群与 VMware NSX 集成的更多信息,请参见Antrea 容器集群的集群

更新软件包配置并进行故障排除

您可以通过查看和修改以下资源来更新自动管理软件包的配置并对其进行故障排除。由于自动管理的软件包由 Tanzu Kubernetes Grid 管理,因此通常无需更新其配置。

类型 资源 描述
配置更新 加载项组件 Secret

要更新由自动管理的软件包安装的加载项组件的默认配置,您可以:

  • 修改加载项组件密钥的 values.yaml 部分。有关详细信息,请参见下面的更新 values.yaml 部分
  • 将覆盖网络添加到附加组件密钥。有关详细信息,请参见下面的添加 Overlay
故障排除 PackageInstall 自定义资源 (CR) 和附加项组件 Secret

同上。此外,如果需要对软件包配置应用临时更改,您可以:

  • 暂停 Secret 协调。
  • 暂停 PackageInstall CR 协调。

这将停用软件包的生命周期管理。请谨慎使用。有关详细信息,请参见下面的暂停自动管理的软件包的生命周期管理

有关加载项组件密钥和 PackageInstall CR 的详细信息,请参见下面的主要术语

更新软件包配置

您可以通过修改加载项组件密钥的 values.yaml 部分或向密钥添加覆盖网络,更新从自动管理的软件包安装的加载项组件的默认配置。这些更改是永久性的。

更新 values.yaml 部分

values.yaml 部分中,可以更新以下配置设置:

软件包 设置 描述
Antrea antrea.config.defaultMTU 默认为 null
Antrea antrea.config.tlsCipherSuites 默认情况下,包括启用了 FIPS 的密码套件。要切换到其他密码套件,请更新 tlsCipherSuites 字段下的值。
Calico calico.config.vethMTU 默认为 “0”,从而使 Calico 自动检测其最大传输大小 (MTU) 设置。设置此参数以字符串形式指定最大数据包大小(以字节为单位)。
Calico calico.config.skipCNIBinaries 默认值为 true,这会限制 Calico 在集群创建期间覆盖现有 CNI 插件的设置。升级集群时,为避免覆盖,请设置 calico.config.skipCNIBinaries=true
Pinniped pinniped.supervisor_svc_external_dns 与 Pinniped 主管关联的 FQDN,用作 OIDC IDP 客户端中的回调 URL。根据 Pinniped 的服务类型,可能还需要包含端口号:
  • 对于 LoadBalancer,在具有 NSX ALB、AWS 或 Azure 的 vSphere 上,请不要不包含端口号:https://hr.tkg.example.com
  • 对于 NodePort,如在没有 NSX ALB 的 vSphere 上一样,请包含端口号:https://hr.tkg.example.com:31234
Pinniped pinniped.upstream_oidc_client_id OIDC 提供程序的客户端 ID。
Pinniped pinniped.upstream_oidc_client_secret OIDC 提供程序的客户端密码。
Pinniped pinniped.upstream_oidc_issuer_url OIDC 提供程序的 URL。
Pinniped pinniped.upstream_oidc_tls_ca_data 用于验证与 OIDC 提供程序的 TLS 连接的 base64 编码 CA 包数据。
Pinniped pinniped.upstream_oidc_additional_scopes 令牌响应中要请求的其他范围的列表。
Pinniped pinniped.upstream_oidc_claims OIDC 声明映射。
Pinniped dex.config.ldap.host* LDAP 服务器的 IP 或 DNS 地址。如果要将默认端口 636 更改为其他端口,请指定 “host:port”
Pinniped dex.config.ldap.bindDN*dex.config.ldap.BIND_PW_ENV_VAR* 应用程序服务帐户的 DN 和密码。
Pinniped dex.config.ldap.userSearch* 用户的搜索属性。有关结构定义,请参见 Dex 文档
Pinniped dex.config.ldap.groupSearch* 组的搜索属性。有关结构定义,请参见 Dex 文档
vSphere CSI vsphereCSI.provisionTimeout 默认为 300s
vSphere CSI vsphereCSI.attachTimeout 默认为 300s

* 如果要更新以 dex. 开头的 Pinniped 设置,请参见部署管理集群后更新 Dex 设置

要修改加载项组件密钥的 values.yaml 部分,请执行以下操作:

  1. 通过对管理集群运行 kubectl get secret CLUSTER-NAME-PACKAGE-NAME-addon -n CLUSTER-NAMESPACE 命令来检索密钥。例如:

    kubectl get secret example-workload-cluster-antrea-addon -n example-workload-cluster-namespace -o jsonpath="{.data.values\.yaml}" | base64 -d > values.yaml
    
  2. 更新 values.yaml 部分。您可以更新上表中列出的任何值。

  3. 通过对编辑的 values.yaml 文件进行 base64 编码应用更新,并在集群密钥中替换该文件。此命令因环境的操作系统而异:例如:

    Linux:

    kubectl patch secret/example-workload-cluster-antrea-addon -n example-workload-cluster-namespace -p "{\"data\":{\"values.yaml\":\"$(base64 -w 0 < values.yaml)\"}}" --type=merge
    

    MacOS:

    kubectl patch secret/example-workload-cluster-antrea-addon -n example-workload-cluster-namespace -p "{\"data\":{\"values.yaml\":\"$(base64 < values.yaml)\"}}" --type=merge
    
  4. 更新秘钥后,通过运行 kubectl get packageinstall 命令检查软件包的状态。例如:

    $ kubectl get packageinstall antrea -n tkg-system
    NAMESPACE    NAME                   PACKAGE NAME                      PACKAGE VERSION                 DESCRIPTION                  AGE
    tkg-system   antrea                 antrea.tanzu.vmware.com           0.13.3+vmware.1-tkg.1           Reconcile succeeded          7d14h
    

    如果返回的状态为 Reconcile failed,请运行以下命令以获取有关失败的详细信息:

    kubectl get packageinstall antrea -n tkg-system -o yaml
    
  5. 运行 kubectl get app 命令。例如:

    $ kubectl get app antrea -n tkg-system
    NAME           DESCRIPTION             SINCE-DEPLOY    AGE
    antrea         Reconcile succeeded     3m23s           7h50m
    

    如果返回的状态为 Reconcile failed,请运行以下命令以获取有关失败的详细信息:

    kubectl get app antrea -n tkg-system -o yaml
    

以下示例更新了 Antrea 的默认最大传输单元 (MTU)。

stringData:
  values.yaml: |
    #@data/values
    #@overlay/match-child-defaults missing_ok=True
    ---
    infraProvider: vsphere
    antrea:
      config:
        defaultMTU: 8900
注意

确保为集群中的所有节点配置相同的 MTU 设置。防火墙设置必须允许配置 MTU 大小的数据包。要解决由集群中节点上的不同 MTU 设置引起的任何问题,请参见MTU 不匹配导致集群工作节点处于 NotReady 状态

添加覆盖网络

在某些情况下,您可以向加载项组件密钥添加覆盖网络。这样,您可以自定义软件包配置文件中定义的默认配置。以下示例指示 Pinniped 使用 LoadBalancer 服务类型,而不是 NodePort,当 NSX Advanced Load Balancer (ALB) 未用作控制平面端点时,这是 vSphere 上的默认值:

...
stringData:
 overlays.yaml: |
   #@ load("@ytt:overlay", "overlay")
   #@overlay/match by=overlay.subset({"kind": "Service", "metadata": {"name": "pinniped-supervisor", "namespace": "pinniped-supervisor"}})
   ---
   #@overlay/replace
   spec:
     type: LoadBalancer
     selector:
       app: pinniped-supervisor
     ports:
       - name: https
         protocol: TCP
         port: 443
         targetPort: 8443
 values.yaml: |
   #@data/values
   #@overlay/match-child-defaults missing_ok=True
   ---
   infrastructure_provider: vsphere
   tkg_cluster_role: management

要添加覆盖网络,请执行以下操作:

  1. 通过对管理集群运行 kubectl get secret CLUSTER-NAME-PACKAGE-NAME-addon -n CLUSTER-NAMESPACE 命令来检索密钥。例如:

    kubectl get secret example-workload-cluster-pinniped-addon -n example-workload-cluster-namespace -o jsonpath="{.data.values\.yaml}" | base64 -d > values.yaml
    
  2. stringData 下添加 overlays.yaml 部分。

  3. 通过对编辑的 values.yaml 文件进行 base64 编码应用更新,并在集群密钥中替换该文件。此命令因环境的操作系统而异:例如:

    Linux:

    kubectl patch secret/example-workload-cluster-pinniped-addon -n example-workload-cluster-namespace -p "{\"data\":{\"values.yaml\":\"$(base64 -w 0 < values.yaml)\"}}" --type=merge
    

    MacOS:

    kubectl patch secret/example-workload-cluster-pinniped-addon -n example-workload-cluster-namespace -p "{\"data\":{\"values.yaml\":\"$(base64 < values.yaml)\"}}" --type=merge
    
  4. 更新秘钥部分,通过运行 kubectl get packageinstallkubectl get app 命令(如更新 values.yaml 部分所述)。

对软件包配置进行故障排除

在对自动管理的软件包进行故障排除之前,请查看以下部分:

主要术语

Tanzu Kubernetes Grid 使用以下资源来管理自动管理软件包的生命周期。

管理集群中安装的组件:

  • kapp-controller,本地软件包管理器:部署管理集群时,Tanzu CLI 会在集群中安装 kapp-controllerkapp-controller 将安装 tanzu-addons-manager 和其他自动管理的软件包。它还会在从管理集群部署的每个工作负载集群中安装和管理 kapp-controller
  • tanzu-addons-manager:管理集群和从管理集群部署的工作负载集群中作为自动管理的软件包安装的附加模块组件。
  • tkr-controller:在管理集群中创建 TKrs 和 BoM ConfigMaps。

工作负载集群中安装的组件:

kapp-controller 会在运行它的工作负载集群中安装自动管理的软件包。

对象:

  • Secret:Tanzu CLI 为每个集群的每个附加模块组件创建一个 Secret。这些密钥定义了附加模块组件的配置。tanzu-addons-manager 读取密钥,并使用密钥包含的配置信息来配置附加模块组件。所有密钥都在管理集群中创建。
  • PackageRepository CR:tanzu-addons-manager创建PackageRepository CR,该 CR 引用所有附加模块组件Package CR(见下文)。
  • Package CR:对于 PackageRepository kapp-controller 中的每个附加模块组件都会在目标集群中创建一个 Package CR。
  • PackageInstall CR:对于附加模块组件 Packagetanzu-addons-manager 会在目标集群中创建一个 PackageInstall CR,以通知 kapp-controller 需要安装哪些自动管理的软件包。
  • App CR:对于每个 PackageInstallkapp-controller 会在目标集群中创建一个 App CR。然后,kapp-controller 协调 CR 并安装软件包。
  • BoM ConfigMap:tanzu-addons-manager 提供有关附加模块组件(如映像位置)的元数据信息。

您可以使用以下命令监控这些资源的状态:

命令 描述
kubectl get packageinstall PACKAGE-NAME -n tkg-system -o yaml 检查目标集群中的 PackageInstall CR。例如,kubectl get packageinstall antrea -n tkg-system -o yaml
kubectl get app PACKAGE-NAME -n tkg-system -o yaml 检查目标集群中的 App CR。例如,kubectl get app antrea -n tkg-system -o yaml
kubectl get cluster CLUSTER-NAME -n CLUSTER-NAMESPACE -o jsonpath={.metadata.labels.tanzuKubernetesRelease} 在管理集群中,检查目标集群的 TKr 标签是否指向正确的 TKr。
kubectl get tanzukubernetesrelease TKR-NAME 检查 TKr 是否位于管理集群中。
kubectl get configmaps -n tkr-system -l ‘tanzuKubernetesRelease=TKR-NAME’ 检查管理集群中是否存在与您的 TKr 对应的 BoM ConfigMap。
kubectl get app CLUSTER-NAME-kapp-controller -n CLUSTER-NAMESPACE 对于工作负载集群,请检查管理集群中是否存在 kapp-controller App CR。
kubectl logs deployment/tanzu-addons-controller-manager -n tkg-system 检查管理集群中的 tanzu-addons-manager 日志。
kubectl get configmap -n tkg-system | grep ADD-ON-NAME-ctrl 检查是否已应用对附加模块密钥的更新。同步时间为 5 分钟。

暂停自动管理的软件包的生命周期管理

重要

本节中的命令会停用软件包生命周期管理。如果可能,请改用上述更新软件包配置中所述的过程。

如果需要临时暂停自动管理的软件包的生命周期管理,可以使用以下命令:

  • 要暂停密钥协调,请对管理集群运行以下命令:

    kubectl patch secret/CLUSTER-NAME-ADD-ON-NAME-addon -n CLUSTER-NAMESPACE -p '{"metadata":{"annotations":{"tkg.tanzu.vmware.com/addon-paused": ""}}}' --type=merge
    

    运行此命令后,tanzu-addons-manager 会停滞协调密钥。

  • 要暂停 PackageInstall CR 协调,请针对目标集群运行以下命令:

    kubectl patch packageinstall/PACKAGE-NAME -n tkg-system -p '{"spec":{"paused":true}}' --type=merge
    

    运行此命令后,kapp-controller 会停止协调 PackageInstall 和相应的 App CR。

如果要临时修改附加模块组件的资源,请先暂停密钥协调,然后再暂停 PackageInstall CR 协调。取消暂停生命周期管理后,tanzu-addons-managerkapp-controller 会恢复密钥及 PackageInstall CR 协调:

  • 要取消暂停密钥协调,请从密钥注释中移除 tkg.tanzu.vmware.com/addon-paused

  • 要取消暂停 PackageInstall CR 协调,请将 PackageInstall CR 更新为 {"spec":{"paused":false}} 或移除变量。

check-circle-line exclamation-circle-line close-line
Scroll to top icon