Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker kube apiserver位于哪里_Docker_Kubernetes_Volume_Persistent Storage_Kube Apiserver - Fatal编程技术网

Docker kube apiserver位于哪里

Docker kube apiserver位于哪里,docker,kubernetes,volume,persistent-storage,kube-apiserver,Docker,Kubernetes,Volume,Persistent Storage,Kube Apiserver,基本问题:当我尝试在我的主节点上使用kube apiserver时,我得到命令not found错误。如何安装/配置kube apiserver?任何指向示例的链接都会有所帮助 $ kube-apiserver --enable-admission-plugins DefaultStorageClass -bash: kube-apiserver: command not found 详细信息:我是Kubernetes和Docker的新手,正在尝试使用volumeClaimTemplates创

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

$ kube-apiserver --enable-admission-plugins DefaultStorageClass
-bash: kube-apiserver: command not found
详细信息:我是Kubernetes和Docker的新手,正在尝试使用volumeClaimTemplates创建StatefulSet。我的问题是没有创建自动PVs,我在PVC日志中看到这样一条消息:“persistentvolume controller正在等待创建卷”。我不确定是否需要定义DefaultStorageClass,因此需要kube apiserver来定义它

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
并获得storageclass:

$ 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>
$kubectl描述storageclass示例nfs
名称:示例nfs
IsDefaultClass:否
注释:
供应器:example.com/nfs
参数:
允许体积膨胀:
安装选项:
回收策略:删除
卷绑定模式:立即
活动:

如何解决此问题(例如,为什么未创建存储的日志)?

您在这里提出了两个不同的问题,一个是关于kube apiserver配置的问题,另一个是关于解决您的
StorageClass的问题

以下是您第一个问题的答案:

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

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

要将存储类“示例nfs”设为默认值,您需要运行以下命令:

kubectl patch storageclass example-nfs -p '{"metadata": 
  {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'

我将提到关于api服务器位置的问题

基本答案(针对问题标题): kube apiserver位于主节点(称为控制平面)上

可以执行以下操作:

1)通过主机的初始化系统(like)

2)作为一个吊舱(我将在下面解释)

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

如果在systemD下运行,您可以运行:
systemctl status api server
查看配置(放置)文件的路径。
如果它作为pod运行,您可以在
kube系统
命名空间下查看它,以及所有其他控制面板组件(加上kube代理,可能还有下面的网络解决方案):

为了得到更多关于吊舱的细节

更高级的回答是: (关于/etc/kubernetes/manifests的位置)

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

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

1)kube api服务器正在主节点上运行

2)Kubelet未作为pod运行,并且当控制平面组件(加上kube代理)作为执行时,它由主节点上的Kubelet完成

因此,我们可以通过调查Kubelet日志开始到达清单路径的旅程。
如果Kubelet运行很长时间,它将是一个非常大的文件,我们需要将其转储到某个地方,然后转到begging-或者如果Kubelet在5分钟前启动,我们可以运行:

sudo journalctl -u kubelet --since -5m >> kubelet_5_minutes.log
快速搜索“api服务器”将看到下面两行,其中提到了清单的路径:

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正试图在
my master
节点下以及
kube系统
命名空间内创建kube apiserver pod:

my-master kubelet[71..]: 00:03:29.05  kubelet.go:1576] ..
           Creating a  mirror pod for "kube-apiserver-my-master_kube-system

这实际上取决于kubernetes集群的部署方式。通常,apiserver部署为静态pod。在这种情况下,当您运行
kubectl get po-n kube system
@whites11时,您应该会看到它被列出。接下来的问题是:如果k8s集群是使用
kubeadm
部署的,那么当相应的清单yaml文件被更新时,静态pod(例如kube调度程序)会重新启动吗?谢谢对您还可以通过将yml文件从静态清单文件夹中移出并放回原来的位置来强制重新启动。谢谢。这就是我要找的。@embik。接下来的问题是:如果相应的
kube scheduler.yaml
文件已更新,您的意思是主节点上的kubelete进程将自动重新启动任何组件pod(例如,kube scheduler)?@kz28是,您可以通过选中“docker ps”来验证我如何访问主节点上的文件系统?我只能进入领奖台,我的问题和上面一样。当您在主节点上说modify/etc/kubernetes/manifests/kube-apiserver.yaml时,是指主节点的物理文件系统吗?如果我用的是Docker Desktop,那会在哪里?
sudo journalctl -u kubelet --since -5m >> kubelet_5_minutes.log
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
my-master kubelet[71..]: 00:03:29.05  kubelet.go:1576] ..
           Creating a  mirror pod for "kube-apiserver-my-master_kube-system