Обновление Kubenetes с 1.8.7 до 1.13.0
контекст
В настоящее время у нас есть 3 стабильных кластера на kubernetes(v1.8.7). Эти кластеры были созданы внешней командой, которая больше не доступна, и у нас ограниченная документация. Мы пытаемся перейти на более стабильную версию (v1.13.0). Мы знаем, что нам нужно обновлять 1 версию за раз, поэтому 1.8 -> 1.9 -> 1.10 и так далее.
Решенные вопросы
- Любые указатели о том, как обновить с 1,8 до 1,9?
Мы попытались установить kubeadm v1.8.7 и запустить
kubeadm upgrade plan
, но это не с выходом -[preflight] Выполнение предполетных проверок не позволило создать клиента Kubernetes из файла "/etc/kubernetes/admin.conf": не удалось загрузить admin kubeconfig [открыть /etc/kubernetes/admin.conf: такого файла или каталога нет]
мы не можем найти файл admin.conf. Любые предложения о том, как мы можем восстановить это или какая информация ему понадобится?
Новый вопрос
Поскольку теперь у нас есть файл admin.conf, мы установили kubectl, kubeadm и kubelet v 1.9.0 -apt-get install kubelet=1.9.0-00 kubeadm=1.9.0-00 kubectl=1.9.0-00
,
Когда я бегу kubeadm upgrade plan v1.9.0
я получил
root@k8s-master-dev-0:/home/azureuser# kubeadm upgrade plan v1.9.0
[preflight] Running pre-flight checks.
[upgrade] Making sure the cluster is healthy:
[upgrade/health] FATAL: [preflight] Some fatal errors occurred:
[ERROR APIServerHealth]: the API Server is unhealthy; /healthz didn't return "ok"
[ERROR MasterNodesReady]: couldn't list masters in cluster: Get https://<k8s-master-dev-0 ip>:6443/api/v1/nodes?labelSelector=node-role.kubernetes.io%2Fmaster%3D: dial tcp <k8s-master-dev-0 ip>:6443: getsockopt: connection refused
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...
root@k8s-master-dev-0:/home/azureuser# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
heapster-75f8df9884-nxn2z 2/2 Running 0 42d
kube-addon-manager-k8s-master-dev-0 1/1 Running 2 1d
kube-addon-manager-k8s-master-dev-1 1/1 Running 4 123d
kube-addon-manager-k8s-master-dev-2 1/1 Running 2 169d
kube-apiserver-k8s-master-dev-0 1/1 Running 100 1d
kube-apiserver-k8s-master-dev-1 1/1 Running 4 123d
kube-apiserver-k8s-master-dev-2 1/1 Running 2 169d
kube-controller-manager-k8s-master-dev-0 1/1 Running 3 1d
kube-controller-manager-k8s-master-dev-1 1/1 Running 4 123d
kube-controller-manager-k8s-master-dev-2 1/1 Running 4 169d
kube-dns-v20-5d9fdc7448-smf9s 3/3 Running 0 42d
kube-dns-v20-5d9fdc7448-vtjh4 3/3 Running 0 42d
kube-proxy-cklcx 1/1 Running 1 123d
kube-proxy-dldnd 1/1 Running 4 169d
kube-proxy-gg89s 1/1 Running 0 169d
kube-proxy-mrkqf 1/1 Running 4 149d
kube-proxy-s95mm 1/1 Running 10 169d
kube-proxy-zxnb7 1/1 Running 2 169d
kube-scheduler-k8s-master-dev-0 1/1 Running 2 1d
kube-scheduler-k8s-master-dev-1 1/1 Running 6 123d
kube-scheduler-k8s-master-dev-2 1/1 Running 4 169d
kubernetes-dashboard-8555bd85db-4txtm 1/1 Running 0 42d
tiller-deploy-6677dc8d46-5n5cp 1/1 Running 0 42d
2 ответа
Давайте пошагово и сначала сгенерируем файл admin.conf в вашем кластере: вы можете сгенерировать файл admin.conf, используя следующую команду:
kubeadm alpha phase kubeconfig admin --cert-dir /etc/kubernetes/pki --kubeconfig-dir /etc/kubernetes/
Теперь вы можете проверить мой следующий ответ, как обновить кластер kubernetes с помощью kubeadm (ответ предназначен для 1.10.0 до 1.10.11, но он применим и для 1.8 до 1.9, вам просто нужно изменить версию для загружаемого пакета)
как обновить kubernetes с v1.10.0 до v1.10.11
Надеюсь это поможет.
Любые указатели о том, как обновить с 1,8 до 1,9?
определенно kubeadm
Мы попытались установить kubeadm v1.8.7 и запустить план обновления kubeadm, но он завершился неудачно с выводом -
[preflight] Выполнение предполетных проверок не позволило создать клиента Kubernetes из файла "/etc/kubernetes/admin.conf": не удалось загрузить admin kubeconfig [открыть /etc/kubernetes/admin.conf: такого файла или каталога нет] мы не можем найти файл admin.conf. Любые предложения о том, как мы можем восстановить это или какая информация ему понадобится?
kubeadm
требуется пара вещей:
- ConfigMap в кластере
- Файл аутентификации / учетных данных
Во-первых, я бы проверил kube-system
пространство имен для kubeadm-config
ConfigMap. Если это существует, вы должны быть в состоянии продолжать относительно безболезненно.
Если этого не существует, вам нужно будет пойти дальше и создать его.
kubeadm config upload from-flags
будет хорошей отправной точкой. Вы можете указать kubelet
флаги от вашего systemd
файл модуля, и он должен привести вас в хорошую форму.
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-config/
Во-вторых, kubeadm
нужен файл conf с учетными данными. Я полагаю, что есть один из них в вашем /etc/kubernetes
каталог где-то; так ковыряйся
Этот файл будет выглядеть как ваши локальные kubeconfigs, начиная с:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: