【问题标题】:How can kube-apiserver be restarted? [closed]kube-apiserver如何重启? [关闭]
【发布时间】:2019-01-10 23:39:54
【问题描述】:

我今天重新启动了系统。之后,我的主系统和 Web 浏览器未连接以查找 kubernetes GUI。

当我运行命令systemctl status kube-apiserver.service时, 它给出如下所示的输出:

kube-apiserver.service
  Loaded: not-found (Reason: No such file or directory)
  Active: inactive (dead)

api-server如何重启?

【问题讨论】:

  • 你能找到你的文件 kube-apiserver.service 吗?
  • 你是如何配置集群的?
  • 是的,我可以找到文件 kube-apiserver.service,但它没有激活。顺便说一句,我刚刚重新启动了服务器的容器,现在一切正常。

标签: kubernetes kube-apiserver


【解决方案1】:

我有类似的问题,但做了一些简单的事情来解决这个问题。我认为它只是systemctl status kube-apiserver

如果上述方法有效,请尝试以下步骤

在大师上:

重启所有服务 etcd kube-apiserver kube-controller-manager kube-scheduler flanneld

在工作器/节点上:

重启所有服务 kube-proxy kubelet flanneld docker

例如:

systemctl restart kube-controller-manager
systemctl enable kube-controller-manager
systemctl status kube-controller-manager

注意:如果它的节点既是master又是worker。在同一个节点上启动。

上述步骤对我有用(但我们正在开发 1.7)。希望有帮助

【讨论】:

  • 这只是给出了我的集群的状态。
  • 之前我只是好奇为什么命令不起作用。现在似乎命令正在运行,如果是这样,请按照修改后的上述步骤
【解决方案2】:

您可以使用以下命令重新启动 api-server:

systemctl restart kube-apiserver.service

但是,如果您不想通过 SSH 连接到控制器节点,请运行以下命令:

kubectl -n kube-system delete pod -l 'component=kube-apiserver'

【讨论】:

    【解决方案3】:

    您是否直接下载并安装了Kubernetes Controller Binaries

    1) 如果有,检查kube-apiserver.service systemd 单元文件是否存在:

    cat /etc/systemd/system/kube-apiserver.service
    

    2 ) 如果不是,您可能使用 安装了 K8S。
    通过此设置,kubeapi-server 作为主节点上的 pod 运行

    kubectl get pods -n kube-system
    NAME                                       READY   STATUS    
    coredns-f9fd979d6-jsn6w                    1/1     Running  ..
    coredns-f9fd979d6-tv5j6                    1/1     Running  ..
    etcd-master-k8s                            1/1     Running  ..
    kube-apiserver-master-k8s                  1/1     Running  .. #<--- Here
    kube-controller-manager-master-k8s         1/1     Running  ..
    kube-proxy-5kzbc                           1/1     Running  ..
    kube-scheduler-master-k8s                  1/1     Running  ..
    

    而不是作为系统服务。

    因此,由于您无法在 K8S 中重新启动 pod,因此您必须将其删除:

    kubectl delete pod/kube-apiserver-master-k8s -n kube-system
    

    并且会立即创建一个新的 pod。


    (*) 当您运行 kubeadm init 时,您应该会看到为控制平面 static Pods 创建清单:

    .
    . 
    [control-plane] Using manifest folder "/etc/kubernetes/manifests"
    [control-plane] Creating static Pod manifest for "kube-apiserver"
    [control-plane] Creating static Pod manifest for "kube-controller-manager"
    [control-plane] Creating static Pod manifest for "kube-scheduler"
    [etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
    .
    .
    

    对应的yamls:

    ubuntu@master-k8s:/etc/kubernetes/manifests$ ls -la
    total 24
    drwxr-xr-x 2 root root 4096 Oct 14 00:13 .
    drwxr-xr-x 4 root root 4096 Sep 29 02:30 ..
    -rw------- 1 root root 2099 Sep 29 02:30 etcd.yaml
    -rw------- 1 root root 3863 Oct 14 00:13 kube-apiserver.yaml <----- Here
    -rw------- 1 root root 3496 Sep 29 02:30 kube-controller-manager.yaml
    -rw------- 1 root root 1384 Sep 29 02:30 kube-scheduler.yaml
    

    还有 kube-apiserver 规范:

    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: 10.100.102.5:6443
      creationTimestamp: null
      labels:
        component: kube-apiserver
        tier: control-plane
      name: kube-apiserver
      namespace: kube-system
    spec:
      containers:
      - command:
        - kube-apiserver
        - --advertise-address=10.100.102.5
        - --allow-privileged=true
        - --authorization-mode=Node,RBAC
        - --client-ca-file=/etc/kubernetes/pki/ca.crt
        - --enable-admission-plugins=NodeRestriction
        - --enable-bootstrap-token-auth=true
        .
        .
        .
    

    【讨论】:

    • 这是不正确的。您不能运行 kubectl delete pod/kube-apiserver-master-k8s -n kube-system 来重新启动 kube-apiserver 容器。这将删除 pod。容器将继续运行。 pod 将立即重新创建,这是正确的,并将正在运行的容器重新分配给 pod,而不会杀死容器进程!编辑:如果你想重新启动 kube-apiserver,你必须杀死容器本身。例如通过 docker 或 crictl。
    • 我不确定您在“这将删除 pod。容器将保持运行”中所写的内容。如果你删除一个 pod,它里面的容器也会被删除。在 K8S 中,没有 pod 就无法控制和管理容器,这就是 K8s 的工作原理。
    • 可能用于部署、StatefulSets 等。今天我针对 cri-o 进行了测试。删除命令重新创建了 apiserver pod,但容器仍在运行。和以前一样的过程。这让我很头疼,因为我想得很清楚,你写了什么。但是我的 apiserver 容器挂载了一个不受清单文件夹控制的文件,并且没有应用对配置的更改。只有通过 cri-o 重新启动容器才有帮助,因为该进程已被终止。 apiserver 容器进程立即出现,我猜是因为 June 控制器。
    • 我承认我不明白以下行的意义:“删除命令重新创建了 apiserver pod,但容器仍在运行。和以前一样的过程。” (:
    • 可以确认@Nortol 所说的。这很奇怪,但是删除 pod 会使容器保持运行,并围绕它创建一个新的 pod。不确定这是静态 pod 特有的东西还是只是一个错误,但在我看到 @Nortol 的评论之前,它也让我感到困惑。我使用crictl stop 直接杀死容器并且它起作用了。
    【解决方案4】:

    将 kube-apiserver 清单文件从 /etc/kubernetes/manifests 文件夹移动到一个临时文件夹。 这种方法的优点是 - 只要文件从 manifest 文件夹中删除,您就可以停止 kube-apiserver。

    vagrant@master01:~$ ll /etc/kubernetes/manifests/
    total 16
    -rw------- 1 root root 3315 May 12 23:24 kube-controller-manager.yaml
    -rw------- 1 root root 1384 May 12 23:24 kube-scheduler.yaml
    -rw------- 1 root root 2157 May 12 23:24 etcd.yaml
    -rw------- 1 root root 3792 May 20 00:08 kube-apiserver.yaml
    vagrant@master01:~$ sudo mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/
    vagrant@master01:~$ 
    vagrant@master01:~$ ll /etc/kubernetes/manifests/
    total 12
    -rw------- 1 root root 3315 May 12 23:24 kube-controller-manager.yaml
    -rw------- 1 root root 1384 May 12 23:24 kube-scheduler.yaml
    -rw------- 1 root root 2157 May 12 23:24 etcd.yaml
    

    API 服务器现已关闭-

    vagrant@master01:~$ k get pods -n kube-system
    The connection to the server 10.0.0.2:6443 was refused - did you specify the right host or port?
    vagrant@master01:~$ 
    
    vagrant@master01:~$ sudo mv /tmp/kube-apiserver.yaml /etc/kubernetes/manifests/
    vagrant@master01:~$ 
    vagrant@master01:~$ ll /etc/kubernetes/manifests/
    total 16
    -rw------- 1 root root 3315 May 12 23:24 kube-controller-manager.yaml
    -rw------- 1 root root 1384 May 12 23:24 kube-scheduler.yaml
    -rw------- 1 root root 2157 May 12 23:24 etcd.yaml
    -rw------- 1 root root 3792 May 20 00:08 kube-apiserver.yaml
    

    API 服务器现已启动

    vagrant@master01:~$ k get pods -n kube-system
    NAME                               READY   STATUS    RESTARTS   AGE
    coredns-558bd4d5db-269lt           1/1     Running   5          8d
    coredns-558bd4d5db-967d8           1/1     Running   5          8d
    etcd-master01                      1/1     Running   6          8d
    kube-apiserver-master01            0/1     Running   2          24h
    kube-controller-manager-master01   1/1     Running   8          8d
    kube-proxy-q8mkb                   1/1     Running   5          8d
    kube-proxy-x6trg                   1/1     Running   6          8d
    kube-proxy-xxph9                   1/1     Running   8          8d
    kube-scheduler-master01            1/1     Running   8          8d
    weave-net-rh2gb                    2/2     Running   18         8d
    weave-net-s2cg9                    2/2     Running   14         8d
    weave-net-wksk2                    2/2     Running   11         8d
    vagrant@master01:~$ 
    

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 2018-10-05
      • 2021-02-11
      • 2023-03-10
      • 1970-01-01
      • 2020-06-16
      • 2020-12-31
      • 2021-02-17
      • 2019-05-08
      相关资源
      最近更新 更多