【问题标题】:Kubenetes upgrade from 1.8.7 to 1.13.0Kubernetes 从 1.8.7 升级到 1.13.0
【发布时间】:2019-05-19 17:29:34
【问题描述】:

上下文

我们目前在 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,但输出失败 -

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

【问题讨论】:

    标签: kubernetes upgrade kubeadm


    【解决方案1】:

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

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

    现在,您可以查看我的以下回答 how to upgrade kubernetes cluster by kubeadm(答案是 1.10.0 到 1.10.11 但也适用于 1.8 到 1.9,您只需更改版本你下载的包)

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

    希望这会有所帮助。

    【讨论】:

    • 谢谢。它确实生成了文件。但是现在当我们运行升级命令时,会发生这种情况 - 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] Checking API Server health: Unhealthy [upgrade/health] FATAL: The cluster is not in an upgradeable state due to: the API Server is unhealthy; /healthz didn't return "ok"
    • 另外,我不得不稍微更改命令,因为它不接受 --kubeconfig-dir 作为有效标志,因此将其删除。
    • 能否请您检查 `kubectl get pods -n kube-system' 的输出并分享。此外,命令更改是由于我使用的是更高版本的 kubeadm。
    • 您在输出中寻找什么具体的东西吗?目前所有的 pod 都在运行。输出非常大,可以在评论中发布。
    • @KshitijKarandikar 您可以编辑问题并将其添加到那里。
    【解决方案2】:

    关于如何从 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 命名空间中的 kubeadm-config ConfigMap。如果存在,您应该能够相对轻松地继续。

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

    kubeadm config upload from-flags 将是一个很好的起点。您可以从 systemd 单元文件中指定 kubelet 标志,它应该可以让您保持良好状态。

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

    其次,kubeadm 需要一个带有凭据的 conf 文件。我想在您的/etc/kubernetes 目录中的某个地方有其中一个;所以四处逛逛。

    这个文件看起来像你的本地 kubeconfigs,开头是:

    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 2019-05-15
      相关资源
      最近更新 更多