Оказывается, что, поскольку pod равен kube-scheduler
, /var/run/secrets/kubernetes.io/serviceaccount/token
, на который ссылаются журналы, смонтирован из /etc/kubernetes/scheduler.conf
на главном узле.
По какой-то причине это былополностью пустой файл в моем кластере. Я восстановил его, следуя инструкциям для kube-планировщика на Трудный путь Kubernetes :
Я запустил следующее в каталоге /etc/kubernetes/pki
(где остались оригинальные CA):
{
cat > kube-scheduler-csr.json <<EOF
{
"CN": "system:kube-scheduler",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "US",
"L": "Portland",
"O": "system:kube-scheduler",
"OU": "Kubernetes The Hard Way",
"ST": "Oregon"
}
]
}
EOF
cfssl gencert \
-ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \
-profile=kubernetes \
kube-scheduler-csr.json | cfssljson -bare kube-scheduler
}
, который генерирует kube-scheduler-key.pem
и kube-scheduler.pem
.
Далее мне нужно было сгенерировать новый файл конфигурации, используя инструкции здесь .
Irun:
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://127.0.0.1:6443 \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-credentials system:kube-scheduler \
--client-certificate=kube-scheduler.pem \
--client-key=kube-scheduler-key.pem \
--embed-certs=true \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-scheduler \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config use-context default --kubeconfig=kube-scheduler.kubeconfig
}
, который генерирует kube-scheduler.kubeconfig
, который я переименовал и переместил в /etc/kubernetes/scheduler.conf
.
Тогда это был всего лишь случай чтения журналов из модуля (kubectl logs kube-scheduler-xxxxxxx -n kube-system
)который будет жаловаться на различные вещи, отсутствующие в файле конфигурации.
Это были блоки «кластеры» и «контексты» YAML, которые я скопировал из одного из других файлов конфигурации в том же каталоге (после проверки того, чтовсе они были идентичны).
После копирования их в scheduler.conf
ошибки прекратились, и все вернулось к жизни.