Kubenetes从1.8.7升级到1.13.0

时间:2018-12-19 08:50:05

标签: kubernetes upgrade kubeadm

上下文

我们目前在kubernetes(v1.8.7)上有3个稳定的集群。这些集群由不再可用的外部团队创建,并且我们的文档有限。我们正在尝试升级到更高的稳定版本(v1.13.0)。我们知道我们需要一次升级1个版本,因此需要1.8-> 1.9-> 1.10等。

已解决的问题

  1. 有关如何从1.8升级到1.9的任何指示?
  2. 我们尝试安装kubeadm v1.8.7并运行kubeadm upgrade plan,但输出失败-

    [preflight]运行飞行前检查 无法从文件“ /etc/kubernetes/admin.conf”创建Kubernetes客户端:无法加载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 个答案:

答案 0 :(得分:0)

让我们一步一步来,首先在集群中生成admin.conf文件: 您可以使用以下命令生成admin.conf文件:

kubeadm alpha phase kubeconfig admin --cert-dir /etc/kubernetes/pki --kubeconfig-dir /etc/kubernetes/

现在,您可以查看我的以下答案,如何通过kubeadm升级kubernetes集群(答案适用于1.10.0至1.10.11,但也适用于1.8至1.9,您只需要更改版本即可下载的软件包)

how to upgrade kubernetes from v1.10.0 to v1.10.11

希望这会有所帮助。

答案 1 :(得分:0)

  

有关如何从1.8升级到1.9的任何指示?

绝对kubeadm

  

我们尝试安装kubeadm v1.8.7并运行kubeadm升级计划,但是   输出失败-

     

[preflight]运行飞行前检查无法创建Kubernetes   文件“ /etc/kubernetes/admin.conf”中的客户端:无法加载管理员   kubeconfig [打开/etc/kubernetes/admin.conf:没有这样的文件或   目录]我们找不到文件admin.conf。关于如何的任何建议   我们可以重新生成此信息或需要什么信息?

kubeadm需要满足以下条件:

  1. ConfigMap集群内
  2. 身份验证/凭据文件

首先,我要检查kube-system ConfigMap的命名空间。如果存在,您应该能够相对轻松地继续。

如果不存在,则需要继续创建它。

kubeadm-config将是一个很好的起点。您可以从kubeadm config upload from-flags单位文件中指定kubelet标志,这样可以使您保持良好状态。

https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-config/#cmd-config-from-flags

第二,systemd需要一个带凭据的conf文件。我以为您的kubeadm目录中某处有其中之一;戳一下。

此文件看起来像您的本地kubeconfig,以:p开头

/etc/kubernetes