将 API 服务器应用程序 ID 应用于 k8s 集群规范

Applying API Server App ID to k8s cluster spec

团队,

我已经有一个集群 运行,我需要更新 OIDC 值。有没有一种方法可以做到这一点而不必重新创建集群?

ex: 下面是我的集群信息,我需要更新 oidcClientID: spn:

我有 5 个 master 运行 怎么办?

kubeAPIServer:
    storageBackend: etcd3
    oidcClientID: spn:45645hhh-f641-498d-b11a-1321231231
    oidcUsernameClaim: upn
    oidcUsernamePrefix: "oidc:"
    oidcGroupsClaim: groups
    oidcGroupsPrefix: "oidc:"

你在你的 masters 上一个接一个地更新你的 kube-apiserver (update/restart)。如果您的集群设置正确,当您到达活动的 kube-apiserver 时,它应该会自动故障转移到另一个处于备用状态的 kube-apiserver master。

您可以在 /etc/kubernetes/manifests/kube-apiserver.yaml pod 清单文件中添加 oidc 选项。

apiVersion: v1
kind: Pod
metadata:
  annotations:
    scheduler.alpha.kubernetes.io/critical-pod: ""
  creationTimestamp: null
  labels:
    component: kube-apiserver
    tier: control-plane
  name: kube-apiserver
  namespace: kube-system
spec:
  containers:
  - command:
    - kube-apiserver
    - --authorization-mode=Node,RBAC
    - --advertise-address=172.x.x.x
    - --allow-privileged=true
    - --client-ca-file=/etc/kubernetes/pki/ca.crt
    - --oidc-client-id=...
    - --oidc-username-claim=...
    - --oidc-username-prefix=...
    - --oidc-groups-claim=...
    - --oidc-groups-prefix=...
...

然后你可以重新启动你的 kube-apiserver 容器,如果你正在使用 docker:

$ sudo docker restart <container-id-for-kube-apiserver>

或者如果您想重新启动主服务器上的所有组件:

$ sudo systemctl restart docker

观察 kube-apiserver 容器上的日志

$ sudo docker logs -f <container-id-for-kube-apiserver>

确保备份的 运行 个节点永远不会少于 quorum which should be 3 for your 5 master cluster, to be safe. If for some reason your etcd cluster falls out of quorum you will have to recover by recreating the etcd cluster and restoring 个。