Skip to content

Latest commit

 

History

History
557 lines (506 loc) · 34.9 KB

2024.08.workerprofile.md

File metadata and controls

557 lines (506 loc) · 34.9 KB

Tip

Ongoing and occasional updates and improvements.

apply settings belongs with worker profile

Openshift4 supports worker profile, which is a set of configurations that can be applied to the worker nodes. The worker profile contains some key parameters that can be adjusted to meet the specific requirements of the worker nodes. But the parameters is predefined, if you want to adjust the parameters, you need to find a way to do it.

Openshift4 developers listed the cluster operator around the worker profile. This gives us a clue on how to do that.

Warning

The method list in this doc, will break the supportability of your openshift cluster, like your cluster can not upgrade without rollback the configurations. Please use it with caution.

Contact with your redhat GPS, TAM, CEE or other redhat support team before apply the changes.

There is redhat cases about the same topic.

for KubeletConfig

Our target is to set the node-status-update-frequency to 5s

Here is the official document to change the kubeletconfig.

# before apply change, check on the worker node
cat /etc/kubernetes/kubelet.conf | grep node
#   "nodeStatusUpdateFrequency": "10s",
#   "nodeStatusReportFrequency": "5m0s",

oc get mcp
# NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
# master   rendered-master-3b06c8a6cdbb7a48ab7c3f43f08990bd   True      False      False      1              1                   1                     0                      16d
# worker   rendered-worker-eeb0c5ee23e3b38d342372cffde47bfb   True      False      False      0              0                   0                     0                      16d

oc get node
# NAME             STATUS   ROLES                         AGE   VERSION
# master-01-demo   Ready    control-plane,master,worker   16d   v1.28.11+add48d0

# label the machineconfigpool
oc label machineconfigpool master custom-kubelet=set-duration

# oc label machineconfigpool master custom-kubelet-

cat << EOF > ${BASE_DIR}/data/install/kubeletconfig-profile.yaml
apiVersion: machineconfiguration.openshift.io/v1
kind: KubeletConfig
metadata:
  name: set-duration
spec:
  machineConfigPoolSelector:
    matchLabels:
      custom-kubelet: set-duration
  kubeletConfig:
    nodeStatusUpdateFrequency: 5s
EOF

oc apply -f ${BASE_DIR}/data/install/kubeletconfig-profile.yaml

# oc delete -f ${BASE_DIR}/data/install/kubeletconfig-profile.yaml

# this will trigger ocp node reboot, after reboot, 
# check node's kubelet.conf
cat kubelet.conf | grep node
#   "nodeStatusUpdateFrequency": "5s",
#   "nodeStatusReportFrequency": "5m0s",

for KubeControllerManager

Our target is to set the node-monitor-grace-period to 20s

Here is the kcs from redhat, tell us how to do it.

# before apply patch, check the kube-controller-manager pod
POD_NAME=`oc get pod -n openshift-kube-controller-manager | grep kube-controller-manager | awk '{print $1}'`

oc exec -n openshift-kube-controller-manager $POD_NAME -- ps -ef
# UID          PID    PPID  C STIME TTY          TIME CMD
# root           1       0  6 00:56 ?        00:00:38 kube-controller-manager --openshift-config=/etc/kubernetes/static-pod-resources/configmaps/config/config.yaml --kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --authentication-kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --authorization-kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --client-ca-file=/etc/kubernetes/static-pod-certs/configmaps/client-ca/ca-bundle.crt --requestheader-client-ca-file=/etc/kubernetes/static-pod-certs/configmaps/aggregator-client-ca/ca-bundle.crt -v=2 --tls-cert-file=/etc/kubernetes/static-pod-resources/secrets/serving-cert/tls.crt --tls-private-key-file=/etc/kubernetes/static-pod-resources/secrets/serving-cert/tls.key --allocate-node-cidrs=false --cert-dir=/var/run/kubernetes --cluster-cidr=10.132.0.0/14 --cluster-name=demo-01-rhsys-wkmd8 --cluster-signing-cert-file=/etc/kubernetes/static-pod-certs/secrets/csr-signer/tls.crt --cluster-signing-duration=720h --cluster-signing-key-file=/etc/kubernetes/static-pod-certs/secrets/csr-signer/tls.key --configure-cloud-routes=false --controllers=* --controllers=-bootstrapsigner --controllers=-tokencleaner --controllers=-ttl --enable-dynamic-provisioning=true --feature-gates=AdminNetworkPolicy=false --feature-gates=AlibabaPlatform=true --feature-gates=AutomatedEtcdBackup=false --feature-gates=AzureWorkloadIdentity=true --feature-gates=BuildCSIVolumes=true --feature-gates=CSIDriverSharedResource=false --feature-gates=CloudDualStackNodeIPs=true --feature-gates=ClusterAPIInstall=false --feature-gates=DNSNameResolver=false --feature-gates=DisableKubeletCloudCredentialProviders=false --feature-gates=DynamicResourceAllocation=false --feature-gates=EventedPLEG=false --feature-gates=ExternalCloudProviderAzure=true --feature-gates=ExternalCloudProviderExternal=true --feature-gates=ExternalCloudProviderGCP=true --feature-gates=GCPClusterHostedDNS=false --feature-gates=GCPLabelsTags=false --feature-gates=GatewayAPI=false --feature-gates=InsightsConfigAPI=false --feature-gates=InstallAlternateInfrastructureAWS=false --feature-gates=MachineAPIOperatorDisableMachineHealthCheckController=false --feature-gates=MachineAPIProviderOpenStack=false --feature-gates=MachineConfigNodes=false --feature-gates=ManagedBootImages=false --feature-gates=MaxUnavailableStatefulSet=false --feature-gates=MetricsServer=false --feature-gates=MixedCPUsAllocation=false --feature-gates=NetworkLiveMigration=true --feature-gates=NodeSwap=false --feature-gates=OnClusterBuild=false --feature-gates=OpenShiftPodSecurityAdmission=false --feature-gates=PrivateHostedZoneAWS=true --feature-gates=RouteExternalCertificate=false --feature-gates=SignatureStores=false --feature-gates=SigstoreImageVerification=false --feature-gates=VSphereControlPlaneMachineSet=false --feature-gates=VSphereStaticIPs=false --feature-gates=ValidatingAdmissionPolicy=false --flex-volume-plugin-dir=/etc/kubernetes/kubelet-plugins/volume/exec --kube-api-burst=300 --kube-api-qps=150 --leader-elect-renew-deadline=12s --leader-elect-resource-lock=leases --leader-elect-retry-period=3s --leader-elect=true --pv-recycler-pod-template-filepath-hostpath=/etc/kubernetes/static-pod-resources/configmaps/recycler-config/recycler-pod.yaml --pv-recycler-pod-template-filepath-nfs=/etc/kubernetes/static-pod-resources/configmaps/recycler-config/recycler-pod.yaml --root-ca-file=/etc/kubernetes/static-pod-resources/configmaps/serviceaccount-ca/ca-bundle.crt --secure-port=10257 --service-account-private-key-file=/etc/kubernetes/static-pod-resources/secrets/service-account-private-key/service-account.key --service-cluster-ip-range=172.22.0.0/16 --use-service-account-credentials=true --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 --tls-min-version=VersionTLS12
# root          47       0  0 01:04 pts/0    00:00:00 sh
# root          59       0  0 01:06 ?        00:00:00 ps -ef

let's see the parameters of kube-controller-manager clearly

kube-controller-manager --openshift-config=/etc/kubernetes/static-pod-resources/configmaps/config/config.yaml --kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --authentication-kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --authorization-kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --client-ca-file=/etc/kubernetes/static-pod-certs/configmaps/client-ca/ca-bundle.crt --requestheader-client-ca-file=/etc/kubernetes/static-pod-certs/configmaps/aggregator-client-ca/ca-bundle.crt -v=2 --tls-cert-file=/etc/kubernetes/static-pod-resources/secrets/serving-cert/tls.crt --tls-private-key-file=/etc/kubernetes/static-pod-resources/secrets/serving-cert/tls.key --allocate-node-cidrs=false --cert-dir=/var/run/kubernetes --cluster-cidr=10.132.0.0/14 --cluster-name=demo-01-rhsys-wkmd8 --cluster-signing-cert-file=/etc/kubernetes/static-pod-certs/secrets/csr-signer/tls.crt --cluster-signing-duration=720h --cluster-signing-key-file=/etc/kubernetes/static-pod-certs/secrets/csr-signer/tls.key --configure-cloud-routes=false --controllers=* --controllers=-bootstrapsigner --controllers=-tokencleaner --controllers=-ttl --enable-dynamic-provisioning=true --feature-gates=AdminNetworkPolicy=false --feature-gates=AlibabaPlatform=true --feature-gates=AutomatedEtcdBackup=false --feature-gates=AzureWorkloadIdentity=true --feature-gates=BuildCSIVolumes=true --feature-gates=CSIDriverSharedResource=false --feature-gates=CloudDualStackNodeIPs=true --feature-gates=ClusterAPIInstall=false --feature-gates=DNSNameResolver=false --feature-gates=DisableKubeletCloudCredentialProviders=false --feature-gates=DynamicResourceAllocation=false --feature-gates=EventedPLEG=false --feature-gates=ExternalCloudProviderAzure=true --feature-gates=ExternalCloudProviderExternal=true --feature-gates=ExternalCloudProviderGCP=true --feature-gates=GCPClusterHostedDNS=false --feature-gates=GCPLabelsTags=false --feature-gates=GatewayAPI=false --feature-gates=InsightsConfigAPI=false --feature-gates=InstallAlternateInfrastructureAWS=false --feature-gates=MachineAPIOperatorDisableMachineHealthCheckController=false --feature-gates=MachineAPIProviderOpenStack=false --feature-gates=MachineConfigNodes=false --feature-gates=ManagedBootImages=false --feature-gates=MaxUnavailableStatefulSet=false --feature-gates=MetricsServer=false --feature-gates=MixedCPUsAllocation=false --feature-gates=NetworkLiveMigration=true --feature-gates=NodeSwap=false --feature-gates=OnClusterBuild=false --feature-gates=OpenShiftPodSecurityAdmission=false --feature-gates=PrivateHostedZoneAWS=true --feature-gates=RouteExternalCertificate=false --feature-gates=SignatureStores=false --feature-gates=SigstoreImageVerification=false --feature-gates=VSphereControlPlaneMachineSet=false --feature-gates=VSphereStaticIPs=false --feature-gates=ValidatingAdmissionPolicy=false --flex-volume-plugin-dir=/etc/kubernetes/kubelet-plugins/volume/exec --kube-api-burst=300 --kube-api-qps=150 --leader-elect-renew-deadline=12s --leader-elect-resource-lock=leases --leader-elect-retry-period=3s --leader-elect=true --pv-recycler-pod-template-filepath-hostpath=/etc/kubernetes/static-pod-resources/configmaps/recycler-config/recycler-pod.yaml --pv-recycler-pod-template-filepath-nfs=/etc/kubernetes/static-pod-resources/configmaps/recycler-config/recycler-pod.yaml --root-ca-file=/etc/kubernetes/static-pod-resources/configmaps/serviceaccount-ca/ca-bundle.crt --secure-port=10257 --service-account-private-key-file=/etc/kubernetes/static-pod-resources/secrets/service-account-private-key/service-account.key --service-cluster-ip-range=172.22.0.0/16 --use-service-account-credentials=true --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 --tls-min-version=VersionTLS12

There is no node-monitor-grace-period in the output, so we need to check the help, whether it is supported.

oc exec -n openshift-kube-controller-manager $POD_NAME -- kube-controller-manager --help | grep node-monitor-grace-period
      # --node-monitor-grace-period duration     Amount of time which we allow running Node to be unresponsive before marking it unhealthy. Must be N times more than kubelet's nodeStatusUpdateFrequency, where N means number of retries allowed for kubelet to post node status. (default 40s)

Yes, it is supported. Let's manually patch the configuration

Apply the patch below.

apiVersion: operator.openshift.io/v1
kind: KubeControllerManager
metadata:
  name: cluster
....
spec:
  ....
  unsupportedConfigOverrides: 
    extendedArguments:
      node-monitor-grace-period:
        - "20s"

After manually patch the config, check the kube-controller-manager pod again

oc exec -n openshift-kube-controller-manager $POD_NAME -- ps -ef
# UID          PID    PPID  C STIME TTY          TIME CMD
# root           1       0  3 01:14 ?        00:00:07 kube-controller-manager --openshift-config=/etc/kubernetes/static-pod-resources/configmaps/config/config.yaml --kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --authentication-kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --authorization-kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --client-ca-file=/etc/kubernetes/static-pod-certs/configmaps/client-ca/ca-bundle.crt --requestheader-client-ca-file=/etc/kubernetes/static-pod-certs/configmaps/aggregator-client-ca/ca-bundle.crt -v=2 --tls-cert-file=/etc/kubernetes/static-pod-resources/secrets/serving-cert/tls.crt --tls-private-key-file=/etc/kubernetes/static-pod-resources/secrets/serving-cert/tls.key --allocate-node-cidrs=false --cert-dir=/var/run/kubernetes --cluster-cidr=10.132.0.0/14 --cluster-name=demo-01-rhsys-wkmd8 --cluster-signing-cert-file=/etc/kubernetes/static-pod-certs/secrets/csr-signer/tls.crt --cluster-signing-duration=720h --cluster-signing-key-file=/etc/kubernetes/static-pod-certs/secrets/csr-signer/tls.key --configure-cloud-routes=false --controllers=* --controllers=-bootstrapsigner --controllers=-tokencleaner --controllers=-ttl --enable-dynamic-provisioning=true --feature-gates=AdminNetworkPolicy=false --feature-gates=AlibabaPlatform=true --feature-gates=AutomatedEtcdBackup=false --feature-gates=AzureWorkloadIdentity=true --feature-gates=BuildCSIVolumes=true --feature-gates=CSIDriverSharedResource=false --feature-gates=CloudDualStackNodeIPs=true --feature-gates=ClusterAPIInstall=false --feature-gates=DNSNameResolver=false --feature-gates=DisableKubeletCloudCredentialProviders=false --feature-gates=DynamicResourceAllocation=false --feature-gates=EventedPLEG=false --feature-gates=ExternalCloudProviderAzure=true --feature-gates=ExternalCloudProviderExternal=true --feature-gates=ExternalCloudProviderGCP=true --feature-gates=GCPClusterHostedDNS=false --feature-gates=GCPLabelsTags=false --feature-gates=GatewayAPI=false --feature-gates=InsightsConfigAPI=false --feature-gates=InstallAlternateInfrastructureAWS=false --feature-gates=MachineAPIOperatorDisableMachineHealthCheckController=false --feature-gates=MachineAPIProviderOpenStack=false --feature-gates=MachineConfigNodes=false --feature-gates=ManagedBootImages=false --feature-gates=MaxUnavailableStatefulSet=false --feature-gates=MetricsServer=false --feature-gates=MixedCPUsAllocation=false --feature-gates=NetworkLiveMigration=true --feature-gates=NodeSwap=false --feature-gates=OnClusterBuild=false --feature-gates=OpenShiftPodSecurityAdmission=false --feature-gates=PrivateHostedZoneAWS=true --feature-gates=RouteExternalCertificate=false --feature-gates=SignatureStores=false --feature-gates=SigstoreImageVerification=false --feature-gates=VSphereControlPlaneMachineSet=false --feature-gates=VSphereStaticIPs=false --feature-gates=ValidatingAdmissionPolicy=false --flex-volume-plugin-dir=/etc/kubernetes/kubelet-plugins/volume/exec --kube-api-burst=300 --kube-api-qps=150 --leader-elect-renew-deadline=12s --leader-elect-resource-lock=leases --leader-elect-retry-period=3s --leader-elect=true --node-monitor-grace-period=20s --pv-recycler-pod-template-filepath-hostpath=/etc/kubernetes/static-pod-resources/configmaps/recycler-config/recycler-pod.yaml --pv-recycler-pod-template-filepath-nfs=/etc/kubernetes/static-pod-resources/configmaps/recycler-config/recycler-pod.yaml --root-ca-file=/etc/kubernetes/static-pod-resources/configmaps/serviceaccount-ca/ca-bundle.crt --secure-port=10257 --service-account-private-key-file=/etc/kubernetes/static-pod-resources/secrets/service-account-private-key/service-account.key --service-cluster-ip-range=172.22.0.0/16 --use-service-account-credentials=true --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 --tls-min-version=VersionTLS12
# root         102       0  0 01:18 ?        00:00:00 ps -ef

kube-controller-manager --openshift-config=/etc/kubernetes/static-pod-resources/configmaps/config/config.yaml --kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --authentication-kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --authorization-kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/controller-manager-kubeconfig/kubeconfig --client-ca-file=/etc/kubernetes/static-pod-certs/configmaps/client-ca/ca-bundle.crt --requestheader-client-ca-file=/etc/kubernetes/static-pod-certs/configmaps/aggregator-client-ca/ca-bundle.crt -v=2 --tls-cert-file=/etc/kubernetes/static-pod-resources/secrets/serving-cert/tls.crt --tls-private-key-file=/etc/kubernetes/static-pod-resources/secrets/serving-cert/tls.key --allocate-node-cidrs=false --cert-dir=/var/run/kubernetes --cluster-cidr=10.132.0.0/14 --cluster-name=demo-01-rhsys-wkmd8 --cluster-signing-cert-file=/etc/kubernetes/static-pod-certs/secrets/csr-signer/tls.crt --cluster-signing-duration=720h --cluster-signing-key-file=/etc/kubernetes/static-pod-certs/secrets/csr-signer/tls.key --configure-cloud-routes=false --controllers=* --controllers=-bootstrapsigner --controllers=-tokencleaner --controllers=-ttl --enable-dynamic-provisioning=true --feature-gates=AdminNetworkPolicy=false --feature-gates=AlibabaPlatform=true --feature-gates=AutomatedEtcdBackup=false --feature-gates=AzureWorkloadIdentity=true --feature-gates=BuildCSIVolumes=true --feature-gates=CSIDriverSharedResource=false --feature-gates=CloudDualStackNodeIPs=true --feature-gates=ClusterAPIInstall=false --feature-gates=DNSNameResolver=false --feature-gates=DisableKubeletCloudCredentialProviders=false --feature-gates=DynamicResourceAllocation=false --feature-gates=EventedPLEG=false --feature-gates=ExternalCloudProviderAzure=true --feature-gates=ExternalCloudProviderExternal=true --feature-gates=ExternalCloudProviderGCP=true --feature-gates=GCPClusterHostedDNS=false --feature-gates=GCPLabelsTags=false --feature-gates=GatewayAPI=false --feature-gates=InsightsConfigAPI=false --feature-gates=InstallAlternateInfrastructureAWS=false --feature-gates=MachineAPIOperatorDisableMachineHealthCheckController=false --feature-gates=MachineAPIProviderOpenStack=false --feature-gates=MachineConfigNodes=false --feature-gates=ManagedBootImages=false --feature-gates=MaxUnavailableStatefulSet=false --feature-gates=MetricsServer=false --feature-gates=MixedCPUsAllocation=false --feature-gates=NetworkLiveMigration=true --feature-gates=NodeSwap=false --feature-gates=OnClusterBuild=false --feature-gates=OpenShiftPodSecurityAdmission=false --feature-gates=PrivateHostedZoneAWS=true --feature-gates=RouteExternalCertificate=false --feature-gates=SignatureStores=false --feature-gates=SigstoreImageVerification=false --feature-gates=VSphereControlPlaneMachineSet=false --feature-gates=VSphereStaticIPs=false --feature-gates=ValidatingAdmissionPolicy=false --flex-volume-plugin-dir=/etc/kubernetes/kubelet-plugins/volume/exec --kube-api-burst=300 --kube-api-qps=150 --leader-elect-renew-deadline=12s --leader-elect-resource-lock=leases --leader-elect-retry-period=3s --leader-elect=true --node-monitor-grace-period=20s --pv-recycler-pod-template-filepath-hostpath=/etc/kubernetes/static-pod-resources/configmaps/recycler-config/recycler-pod.yaml --pv-recycler-pod-template-filepath-nfs=/etc/kubernetes/static-pod-resources/configmaps/recycler-config/recycler-pod.yaml --root-ca-file=/etc/kubernetes/static-pod-resources/configmaps/serviceaccount-ca/ca-bundle.crt --secure-port=10257 --service-account-private-key-file=/etc/kubernetes/static-pod-resources/secrets/service-account-private-key/service-account.key --service-cluster-ip-range=172.22.0.0/16 --use-service-account-credentials=true --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 --tls-min-version=VersionTLS12

You can see the parameters now.

for KubeAPIServer

Our target is to set the default-not-ready-toleration-seconds to 20s

# before apply patch, check the kube-controller-manager pod
POD_NAME=`oc get pod -n openshift-kube-apiserver | grep kube-apiserver | awk '{print $1}'`

oc exec -n openshift-kube-apiserver $POD_NAME -- ps -ef
# UID          PID    PPID  C STIME TTY          TIME CMD
# root           1       0  0 00:56 ?        00:00:00 watch-termination --termination-touch-file=/var/log/kube-apiserver/.terminating --termination-log-file=/var/log/kube-apiserver/termination.log --graceful-termination-duration=15s --kubeconfig=/etc/kubernetes/static-pod-resources/configmaps/kube-apiserver-cert-syncer-kubeconfig/kubeconfig -- hyperkube kube-apiserver --openshift-config=/etc/kubernetes/static-pod-resources/configmaps/config/config.yaml --advertise-address=192.168.50.23 -v=2 --permit-address-sharing
# root          19       1 93 00:56 ?        00:35:11 kube-apiserver --openshift-config=/etc/kubernetes/static-pod-resources/configmaps/config/config.yaml --advertise-address=192.168.50.23 -v=2 --permit-address-sharing
# root          63       0  0 01:33 ?        00:00:00 ps -ef

oc exec -n openshift-kube-apiserver $POD_NAME -- cat /etc/kubernetes/static-pod-resources/configmaps/config/config.yaml
# the output is a json

Let's see the configuration in detail

{
  "admission": {
    "pluginConfig": {
      "PodSecurity": {
        "configuration": {
          "apiVersion": "pod-security.admission.config.k8s.io/v1",
          "defaults": {
            "audit": "restricted",
            "audit-version": "latest",
            "enforce": "privileged",
            "enforce-version": "latest",
            "warn": "restricted",
            "warn-version": "latest"
          },
          "exemptions": {
            "usernames": [
              "system:serviceaccount:openshift-infra:build-controller"
            ]
          },
          "kind": "PodSecurityConfiguration"
        }
      },
      "network.openshift.io/ExternalIPRanger": {
        "configuration": {
          "allowIngressIP": false,
          "apiVersion": "network.openshift.io/v1",
          "externalIPNetworkCIDRs": null,
          "kind": "ExternalIPRangerAdmissionConfig"
        },
        "location": ""
      },
      "network.openshift.io/RestrictedEndpointsAdmission": {
        "configuration": {
          "apiVersion": "network.openshift.io/v1",
          "kind": "RestrictedEndpointsAdmissionConfig",
          "restrictedCIDRs": [
            "10.132.0.0/14",
            "172.22.0.0/16"
          ]
        }
      }
    }
  },
  "apiServerArguments": {
    "allow-privileged": [
      "true"
    ],
    "anonymous-auth": [
      "true"
    ],
    "api-audiences": [
      "https://kubernetes.default.svc"
    ],
    "audit-log-format": [
      "json"
    ],
    "audit-log-maxbackup": [
      "10"
    ],
    "audit-log-maxsize": [
      "200"
    ],
    "audit-log-path": [
      "/var/log/kube-apiserver/audit.log"
    ],
    "audit-policy-file": [
      "/etc/kubernetes/static-pod-resources/configmaps/kube-apiserver-audit-policies/policy.yaml"
    ],
    "authentication-token-webhook-config-file": [
      "/etc/kubernetes/static-pod-resources/secrets/webhook-authenticator/kubeConfig"
    ],
    "authentication-token-webhook-version": [
      "v1"
    ],
    "authorization-mode": [
      "Scope",
      "SystemMasters",
      "RBAC",
      "Node"
    ],
    "client-ca-file": [
      "/etc/kubernetes/static-pod-certs/configmaps/client-ca/ca-bundle.crt"
    ],
    "enable-admission-plugins": [
      "CertificateApproval",
      "CertificateSigning",
      "CertificateSubjectRestriction",
      "DefaultIngressClass",
      "DefaultStorageClass",
      "DefaultTolerationSeconds",
      "LimitRanger",
      "MutatingAdmissionWebhook",
      "NamespaceLifecycle",
      "NodeRestriction",
      "OwnerReferencesPermissionEnforcement",
      "PersistentVolumeClaimResize",
      "PersistentVolumeLabel",
      "PodNodeSelector",
      "PodTolerationRestriction",
      "Priority",
      "ResourceQuota",
      "RuntimeClass",
      "ServiceAccount",
      "StorageObjectInUseProtection",
      "TaintNodesByCondition",
      "ValidatingAdmissionWebhook",
      "ValidatingAdmissionPolicy",
      "authorization.openshift.io/RestrictSubjectBindings",
      "authorization.openshift.io/ValidateRoleBindingRestriction",
      "config.openshift.io/DenyDeleteClusterConfiguration",
      "config.openshift.io/ValidateAPIServer",
      "config.openshift.io/ValidateAuthentication",
      "config.openshift.io/ValidateConsole",
      "config.openshift.io/ValidateFeatureGate",
      "config.openshift.io/ValidateImage",
      "config.openshift.io/ValidateOAuth",
      "config.openshift.io/ValidateProject",
      "config.openshift.io/ValidateScheduler",
      "image.openshift.io/ImagePolicy",
      "network.openshift.io/ExternalIPRanger",
      "network.openshift.io/RestrictedEndpointsAdmission",
      "quota.openshift.io/ClusterResourceQuota",
      "quota.openshift.io/ValidateClusterResourceQuota",
      "route.openshift.io/IngressAdmission",
      "scheduling.openshift.io/OriginPodNodeEnvironment",
      "security.openshift.io/DefaultSecurityContextConstraints",
      "security.openshift.io/SCCExecRestrictions",
      "security.openshift.io/SecurityContextConstraint",
      "security.openshift.io/ValidateSecurityContextConstraints",
      "storage.openshift.io/CSIInlineVolumeSecurity"
    ],
    "enable-aggregator-routing": [
      "true"
    ],
    "enable-logs-handler": [
      "false"
    ],
    "endpoint-reconciler-type": [
      "lease"
    ],
    "etcd-cafile": [
      "/etc/kubernetes/static-pod-resources/configmaps/etcd-serving-ca/ca-bundle.crt"
    ],
    "etcd-certfile": [
      "/etc/kubernetes/static-pod-resources/secrets/etcd-client/tls.crt"
    ],
    "etcd-healthcheck-timeout": [
      "9s"
    ],
    "etcd-keyfile": [
      "/etc/kubernetes/static-pod-resources/secrets/etcd-client/tls.key"
    ],
    "etcd-prefix": [
      "kubernetes.io"
    ],
    "etcd-readycheck-timeout": [
      "9s"
    ],
    "etcd-servers": [
      "https://192.168.50.23:2379",
      "https://localhost:2379"
    ],
    "event-ttl": [
      "3h"
    ],
    "feature-gates": [
      "AdminNetworkPolicy=false",
      "AlibabaPlatform=true",
      "AutomatedEtcdBackup=false",
      "AzureWorkloadIdentity=true",
      "BuildCSIVolumes=true",
      "CSIDriverSharedResource=false",
      "CloudDualStackNodeIPs=true",
      "ClusterAPIInstall=false",
      "DNSNameResolver=false",
      "DisableKubeletCloudCredentialProviders=false",
      "DynamicResourceAllocation=false",
      "EventedPLEG=false",
      "ExternalCloudProvider=true",
      "ExternalCloudProviderAzure=true",
      "ExternalCloudProviderExternal=true",
      "ExternalCloudProviderGCP=true",
      "GCPClusterHostedDNS=false",
      "GCPLabelsTags=false",
      "GatewayAPI=false",
      "InsightsConfigAPI=false",
      "InstallAlternateInfrastructureAWS=false",
      "MachineAPIOperatorDisableMachineHealthCheckController=false",
      "MachineAPIProviderOpenStack=false",
      "MachineConfigNodes=false",
      "ManagedBootImages=false",
      "MaxUnavailableStatefulSet=false",
      "MetricsServer=false",
      "MixedCPUsAllocation=false",
      "NetworkLiveMigration=true",
      "NodeSwap=false",
      "OnClusterBuild=false",
      "OpenShiftPodSecurityAdmission=false",
      "PrivateHostedZoneAWS=true",
      "RouteExternalCertificate=false",
      "SignatureStores=false",
      "SigstoreImageVerification=false",
      "VSphereControlPlaneMachineSet=false",
      "VSphereStaticIPs=false",
      "ValidatingAdmissionPolicy=false"
    ],
    "goaway-chance": [
      "0"
    ],
    "http2-max-streams-per-connection": [
      "2000"
    ],
    "kubelet-certificate-authority": [
      "/etc/kubernetes/static-pod-resources/configmaps/kubelet-serving-ca/ca-bundle.crt"
    ],
    "kubelet-client-certificate": [
      "/etc/kubernetes/static-pod-certs/secrets/kubelet-client/tls.crt"
    ],
    "kubelet-client-key": [
      "/etc/kubernetes/static-pod-certs/secrets/kubelet-client/tls.key"
    ],
    "kubelet-preferred-address-types": [
      "InternalIP"
    ],
    "kubelet-read-only-port": [
      "0"
    ],
    "kubernetes-service-node-port": [
      "0"
    ],
    "max-mutating-requests-inflight": [
      "1000"
    ],
    "max-requests-inflight": [
      "3000"
    ],
    "min-request-timeout": [
      "3600"
    ],
    "proxy-client-cert-file": [
      "/etc/kubernetes/static-pod-certs/secrets/aggregator-client/tls.crt"
    ],
    "proxy-client-key-file": [
      "/etc/kubernetes/static-pod-certs/secrets/aggregator-client/tls.key"
    ],
    "requestheader-allowed-names": [
      "kube-apiserver-proxy",
      "system:kube-apiserver-proxy",
      "system:openshift-aggregator"
    ],
    "requestheader-client-ca-file": [
      "/etc/kubernetes/static-pod-certs/configmaps/aggregator-client-ca/ca-bundle.crt"
    ],
    "requestheader-extra-headers-prefix": [
      "X-Remote-Extra-"
    ],
    "requestheader-group-headers": [
      "X-Remote-Group"
    ],
    "requestheader-username-headers": [
      "X-Remote-User"
    ],
    "send-retry-after-while-not-ready-once": [
      "true"
    ],
    "service-account-issuer": [
      "https://kubernetes.default.svc"
    ],
    "service-account-jwks-uri": [
      "https://api.demo-01-rhsys.wzhlab.top:6443/openid/v1/jwks"
    ],
    "service-account-lookup": [
      "true"
    ],
    "service-account-signing-key-file": [
      "/etc/kubernetes/static-pod-certs/secrets/bound-service-account-signing-key/service-account.key"
    ],
    "service-node-port-range": [
      "30000-32767"
    ],
    "shutdown-delay-duration": [
      "0s"
    ],
    "shutdown-send-retry-after": [
      "true"
    ],
    "storage-backend": [
      "etcd3"
    ],
    "storage-media-type": [
      "application/vnd.kubernetes.protobuf"
    ],
    "strict-transport-security-directives": [
      "max-age=31536000,includeSubDomains,preload"
    ],
    "tls-cert-file": [
      "/etc/kubernetes/static-pod-certs/secrets/service-network-serving-certkey/tls.crt"
    ],
    "tls-private-key-file": [
      "/etc/kubernetes/static-pod-certs/secrets/service-network-serving-certkey/tls.key"
    ]
  },
  "apiVersion": "kubecontrolplane.config.openshift.io/v1",
  "authConfig": {
    "oauthMetadataFile": "/etc/kubernetes/static-pod-resources/configmaps/oauth-metadata/oauthMetadata"
  },
  "consolePublicURL": "",
  "corsAllowedOrigins": [
    "//127\\.0\\.0\\.1(:|$)",
    "//localhost(:|$)"
  ],
  "imagePolicyConfig": {
    "internalRegistryHostname": "image-registry.openshift-image-registry.svc:5000"
  },
  "kind": "KubeAPIServerConfig",
  "projectConfig": {
    "defaultNodeSelector": ""
  },
  "serviceAccountPublicKeyFiles": [
    "/etc/kubernetes/static-pod-resources/configmaps/sa-token-signing-certs",
    "/etc/kubernetes/static-pod-resources/configmaps/bound-sa-token-signing-certs"
  ],
  "servicesSubnet": "172.22.0.0/16",
  "servingInfo": {
    "bindAddress": "0.0.0.0:6443",
    "bindNetwork": "tcp4",
    "cipherSuites": [
      "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
      "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
      "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
      "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
      "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
      "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"
    ],
    "minTLSVersion": "VersionTLS12",
    "namedCertificates": [
      {
        "certFile": "/etc/kubernetes/static-pod-certs/secrets/localhost-serving-cert-certkey/tls.crt",
        "keyFile": "/etc/kubernetes/static-pod-certs/secrets/localhost-serving-cert-certkey/tls.key"
      },
      {
        "certFile": "/etc/kubernetes/static-pod-certs/secrets/service-network-serving-certkey/tls.crt",
        "keyFile": "/etc/kubernetes/static-pod-certs/secrets/service-network-serving-certkey/tls.key"
      },
      {
        "certFile": "/etc/kubernetes/static-pod-certs/secrets/external-loadbalancer-serving-certkey/tls.crt",
        "keyFile": "/etc/kubernetes/static-pod-certs/secrets/external-loadbalancer-serving-certkey/tls.key"
      },
      {
        "certFile": "/etc/kubernetes/static-pod-certs/secrets/internal-loadbalancer-serving-certkey/tls.crt",
        "keyFile": "/etc/kubernetes/static-pod-certs/secrets/internal-loadbalancer-serving-certkey/tls.key"
      },
      {
        "certFile": "/etc/kubernetes/static-pod-resources/secrets/localhost-recovery-serving-certkey/tls.crt",
        "keyFile": "/etc/kubernetes/static-pod-resources/secrets/localhost-recovery-serving-certkey/tls.key"
      }
    ]
  }
}

there is no default-not-ready-toleration-seconds in the configuration

# confirm the parameter is not there.
oc exec -n openshift-kube-apiserver $POD_NAME -- cat /etc/kubernetes/static-pod-resources/configmaps/config/config.yaml | grep default-not-ready-toleration-seconds
# no output

# and kube-apiserver support the parameter
oc exec -n openshift-kube-apiserver $POD_NAME -- kube-apiserver --help | grep default-not-ready-toleration-seconds
      # --default-not-ready-toleration-seconds int           Indicates the tolerationSeconds of the toleration for notReady:NoExecute that is added by default to every pod that does not already have such a toleration. (default 300)

Apply the patch below.

apiVersion: operator.openshift.io/v1
kind: KubeAPIServer
  name: cluster
  ....
spec:
  ....
  unsupportedConfigOverrides: 
    apiServerArguments:
      default-not-ready-toleration-seconds:
        - "20"

And check the configuration again

# go back to check the configuration again, we can see the parameter now
oc exec -n openshift-kube-apiserver $POD_NAME -- cat /etc/kubernetes/static-pod-resources/configmaps/config/config.yaml | jq . | grep -A 2 default-not-ready-toleration-seconds
    # "default-not-ready-toleration-seconds": [
    #   "20"
    # ],

end