x509 Сертификат подписан неизвестным лицом - kubeadm - PullRequest
0 голосов
/ 08 ноября 2018

Я ищу сообщение для предварительного просмотра, но не могу найти решение, извините.

Я устанавливаю сервер метрик на kubeadm v1.12 и получаю эту ошибку из журналов:

1 главный узел и 1 подчиненный узел в частной сети.

Get https://ip-10-0-1-154:10250/stats/summary/: x509: a certificate signed by an unknown authority, unable to fully scrape metrics from source 

Я не устанавливаю сертификат.

Как я могу установить новый сертификат и где мне нужно его изменить, не устанавливая новый кластер kubernetes?

Извините за вопрос noob, я пытался создать новый сертификат, но я не могу заставить kubelet измениться.

1 Ответ

0 голосов
/ 09 ноября 2018

Это проблема с kubeadm, когда он генерирует kubelet сертификаты на узлах в /var/lib/kubelet/pki (kubelet.crt, kubelet.key), подписанные другим СА, чем тот, который используется для мастера (ов) в /etc/kubernetes/pki (приблизительно). Некоторый фон здесь , Вам нужно будет восстановить сертификаты для ваших kubelets, подписанные CA на master (s) /etc/kubernetes/pki/ca.crt

Вы можете следовать что-то вроде это . Например, используйте cfssl

Примерно так:

$ mkdir ~/mycerts; cd ~/mycerts
$ cp /etc/kubernetes/pki/ca.crt ca.pem
$ cp /etc/kubernetes/pki/ca.key ca-key.pem

Создайте файл kubelet-csr.json с чем-то вроде этого:

{
  "CN": "kubernetes",
  "hosts": [
    "127.0.0.1",
    "<your-node-name>",
    "kubernetes",
    "kubernetes.default",
    "kubernetes.default.svc",
    "kubernetes.default.svc.cluster",
    "kubernetes.default.svc.cluster.local"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [{
    "C": "US",
    "ST": "NY",
    "L": "City",
    "O": "Org",
    "OU": "Unit"
  }]
}

Создать файл ca-config.json:

{
  "signing": {
    "default": {
      "expiry": "8760h"
    },
    "profiles": {
      "kubernetes": {
        "usages": [
          "signing",
          "key encipherment",
          "server auth",
          "client auth"
        ],
        "expiry": "8760h"
      }
    }
  }
}

Создать файл config.json:

{
    "signing": {
        "default": {
            "expiry": "168h"
        },
        "profiles": {
            "www": {
                "expiry": "8760h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth"
                ]
            },
            "client": {
                "expiry": "8760h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "client auth"
                ]
            }
        }
    }
}

Генерируйте сертификаты:

$ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem \
  --config=ca-config.json -profile=kubernetes \
  kubelet-csr.json | cfssljson -bare kubelet

Скопируйте файлы на ваши узлы:

$ scp kubelet.pem <node-ip>:/var/lib/kubelet/pki/kubelet.crt
$ scp kubelet-key.pem <node-ip>:/var/lib/kubelet/pki/kubelet.key

Перезапустите kubelet на вашем узле:

$ systemctl restart kubelet

PD. Открыл this для отслеживания проблемы.

...