Docker kube apiserver位于哪里
基本问题:当我尝试在我的主节点上使用kube apiserver时,我得到命令not found错误。如何安装/配置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 --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