首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kube-apiserver位于何处

kube-apiserver位于何处
EN

Stack Overflow用户
提问于 2018-05-15 22:20:37
回答 3查看 24.6K关注 0票数 31

基本问题:当我尝试在我的主节点上使用kube-apiserver时,我收到命令未找到错误。如何安装/配置kube-apiserver?任何指向示例的链接都会有所帮助。

代码语言:javascript
复制
$ kube-apiserver --enable-admission-plugins DefaultStorageClass
-bash: kube-apiserver: command not found

详细信息:我是Kubernetes和Docker的新手,正在尝试用volumeClaimTemplates创建StatefulSet。我的问题是没有创建自动PV,并且我在PVC日志中得到了这样的消息:"persistentvolume-controller等待创建一个卷“。我不确定是否需要定义DefaultStorageClass,因此需要kube-apiserver来定义它。

代码语言:javascript
复制
Name:          nfs
Namespace:     default
StorageClass:  example-nfs
Status:        Pending
Volume:
Labels:        <none>
Annotations:   volume.beta.kubernetes.io/storage-provisioner=example.com/nfs
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
Events:
  Type    Reason                Age                  From                         Message
  ----    ------                ----                 ----                         -------
  Normal  ExternalProvisioning  3m (x2401 over 10h)  persistentvolume-controller  waiting for a volume to be created, either by external provisioner "example.com/nfs" or manually created by system administrator

下面是get pvc结果:

代码语言:javascript
复制
$ kubectl get pvc
NAME      STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nfs       Pending                                       example-nfs    10h

并获取storageclass:

代码语言:javascript
复制
$ kubectl describe storageclass example-nfs
Name:                  example-nfs
IsDefaultClass:        No
Annotations:           <none>
Provisioner:           example.com/nfs
Parameters:            <none>
AllowVolumeExpansion:  <unset>
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     Immediate
Events:                <none>

如何解决此问题(例如,有关未创建存储的原因的日志)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-16 02:11:57

您在这里提出了两个不同的问题,一个是关于kube-apiserver配置的,另一个是关于排除StorageClass故障的。

这是你第一个问题的答案:

kube-apiserver在您的主节点上作为Docker容器运行。因此,二进制文件在容器中,而不是在主机系统上。它由主服务器的kubelet从位于/etc/kubernetes/manifests的文件中启动。kubelet正在监视此目录,并将启动此处定义为“静态Pod”的任何Pod。

要配置kube-apiserver命令行参数,您需要修改主服务器上的/etc/kubernetes/manifests/kube-apiserver.yaml

票数 53
EN

Stack Overflow用户

发布于 2020-10-25 06:09:16

我将参考有关api-server位置的问题。

基本答案(针对问题标题):

kube apiserver位于主节点(称为控制平面)上。

它可以被执行:

1)通过主机的初始化系统(如systemd)。

2)作为pod (我将在下面解释)。

在这两种情况下,它都将位于control plane上(下方左侧):

如果它在systemD下运行,您可以运行:systemctl status api-server来查看配置(插件)文件的路径。

如果它是作为pod运行的,你可以在kube-system名称空间下使用所有其他控制面板组件(加上kube-proxy,也许还有像下面这样的网络解决方案)来查看它:

代码语言:javascript
复制
$ kubectl get pods -n kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
coredns-f9fd979d6-lpdlc                   1/1     Running   1          2d22h
coredns-f9fd979d6-vcs7g                   1/1     Running   1          2d22h
etcd-my-master                            1/1     Running   1          2d22h
kube-apiserver-my-master                  1/1     Running   1          2d22h #<----Here
kube-controller-manager-my-master         1/1     Running   1          2d22h
kube-proxy-kh2lc                          1/1     Running   1          2d22h
kube-scheduler-my-master                  1/1     Running   1          2d22h
weave-net-59r5b                           2/2     Running   3          2d22h

您可以运行:

代码语言:javascript
复制
kubectl describe pod/kube-apiserver-my-master -n kube-system

以获取更多关于pod的详细信息。

一个更高级的答案:

清单(关于/etc/kubernetes/的位置)

假设我们不知道在哪里可以找到kube-api-server配置文件的相关路径。

但我们需要记住两件重要的事情:

1) kube-api-server在主节点上运行。

2) Kubelet没有作为pod运行,当控制平面组件(加上kube-proxy)作为static pods执行时-这是由主节点上的Kubelet完成的。

因此,我们可以通过调查Kubelet日志来开始我们到达清单路径的旅程。

如果Kubelet运行了很长时间,这将是一个非常大的文件,我们需要将其转储到某个地方并进行乞讨-或者,如果Kubelet是在5分钟前启动的,我们可以运行:

代码语言:javascript
复制
sudo journalctl -u kubelet --since -5m >> kubelet_5_minutes.log

快速搜索"api-server“将把我们带到下面两行,其中提到了清单的路径:

代码语言:javascript
复制
my-master kubelet[71..]: 00:03:21 kubelet.go:261] Adding pod path: /etc/kubernetes/manifests
my-master kubelet[71..]: 00:03:21 kubelet.go:273] Watching apiserver

我们还可以看到Kubelet正在尝试在kube-system名称空间中的my-master节点下创建kube-apiserver pod:

代码语言:javascript
复制
my-master kubelet[71..]: 00:03:29.05  kubelet.go:1576] ..
           Creating a  mirror pod for "kube-apiserver-my-master_kube-system
票数 1
EN

Stack Overflow用户

发布于 2019-06-13 08:51:37

要将存储类"example-nfs“设为默认值,您需要运行以下命令:

代码语言:javascript
复制
kubectl patch storageclass example-nfs -p '{"metadata": 
  {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50352621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档