Problèmes rencontrés lors de l'installation du serveur de métriques dans le déploiement binaire Kubernetes

ubernetes 部署 metrics-server 后 执行 kubectl top pod 或 kubectl top node 报错
Erreur du serveur (ServiceUnavailable): le serveur est actuellement incapable de traiter la requête (get pods.metrics.k8s.io)

1. Étapes de vérification des problèmes:

1.1. Afficher le journal du service du serveur de métriques

Cluster doesn't provide requestheader-client-ca-file in configmap/extension-apiserver-authentication in kube-system, so request-header client certificate authentication won't work.

L'inspection a révélé que l'erreur HTTP 403 a été renvoyée en raison du manque d'autorisation d'appeler metrics-server

1.2. Vérifiez si les paramètres suivants sont configurés

        args:
          - --cert-dir=/tmp
          - --secure-port=4443
          - --kubelet-insecure-tls=true
          - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,externalDNS

1.3. Résumé du problème:

Il n'y a pas de problème avec la configuration du service de métriques-serveur, mais le service signale toujours une erreur du serveur (ServiceUnavailable): le serveur est actuellement incapable de gérer la demande (get pods.metrics.k8s.io), il y a deux façons de résoudre le problème

1. Autorisez le rôle de cluster au système utilisateur: anonyme

kubectl create clusterrolebinding system:anonymous  --clusterrole=cluster-admin  --user=system:anonymous

2. Créez le rôle système: metrics-server et autorisez-le

2. Résolution de problèmes (création du système: rôle de serveur de métriques et autorisation)

Configurer le certificat du serveur de métriques

# vim metrics-server-csr.json
{
  "CN": "system:metrics-server",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "k8s",
      "OU": "system"
    }
  ]
}

 

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes metrics-server-csr.json | cfssljson -bare metrics-server

Configurer l'autorisation RBAC du serveur de métriques

cat > auth-metrics-server.yaml << EOF
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: system:auth-metrics-server-reader
  labels:
    rbac.authorization.k8s.io/aggregate-to-view: "true"
    rbac.authorization.k8s.io/aggregate-to-edit: "true"
    rbac.authorization.k8s.io/aggregate-to-admin: "true"
rules:
- apiGroups: ["metrics.k8s.io"]
  resources: ["pods", "nodes"]
  verbs: ["get", "list", "watch"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: metrics-server:system:auth-metrics-server
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-metrics-server-reader
subjects:
- kind: User
  name: system:metrics-server
  namespace: kube-system
EOF

kube-apiserver ajoute la configuration requise par metrics-server

--requestheader-client-ca-file=/opt/kubernetes/ssl/ca.pem \
--requestheader-allowed-names=aggregator,metrics-server \
--requestheader-extra-headers-prefix=X-Remote-Extra- \
--requestheader-group-headers=X-Remote-Group \
--requestheader-username-headers=X-Remote-User \
--proxy-client-cert-file=/opt/kubernetes/ssl/metrics-server.pem \
--proxy-client-key-file=/opt/kubernetes/ssl/metrics-server-key.pem 

Vérifiez si les informations de surveillance peuvent être obtenues normalement

 

 

Je suppose que tu aimes

Origine blog.csdn.net/heian_99/article/details/115137827
conseillé
Classement