自定义调度程序在挂起的Kubernetes集群中离开pod
我按照Kubernetes文档中提到的说明一步一步地部署自定义调度器 这里是[链接]() 我指定的pod应该使用我部署的调度器进行调度,“我的调度器”处于挂起状态自定义调度程序在挂起的Kubernetes集群中离开pod,kubernetes,scheduler,Kubernetes,Scheduler,我按照Kubernetes文档中提到的说明一步一步地部署自定义调度器 这里是[链接]() 我指定的pod应该使用我部署的调度器进行调度,“我的调度器”处于挂起状态 Kubectl version : -Client: v1.14.1 -Server: v1.14.0 kubeadm version : v1.14.1 alisd@kubeMaster:~$ kubectl get pods -n kube-system NAME
Kubectl version : -Client: v1.14.1
-Server: v1.14.0
kubeadm version : v1.14.1
alisd@kubeMaster:~$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-node-944jv 2/2 Running 4 45h
coredns-fb8b8dccf-hzzwf 1/1 Running 2 45h
coredns-fb8b8dccf-zb228 1/1 Running 2 45h
etcd-kubemaster 1/1 Running 3 45h
kube-apiserver-kubemaster 1/1 Running 3 45h
kube-controller-manager-kubemaster 1/1 Running 3 45h
kube-proxy-l6wrc 1/1 Running 3 45h
kube-scheduler-kubemaster 1/1 Running 3 45h
my-scheduler-66cf896bfb-8j8sr 1/1 Running 2 45h
alisd@kubeMaster:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
annotation-second-scheduler 0/1 Pending 0 4s
alisd@kubeMaster:~$ kubectl describe pod annotation-second-scheduler
Name: annotation-second-scheduler
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: <none>
Labels: name=multischeduler-example
Annotations: <none>
Status: Pending
IP:
Containers:
pod-with-second-annotation-container:
Image: k8s.gcr.io/pause:2.0
Port: <none>
Host Port: <none>
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-jclk7 (ro)
Volumes:
default-token-jclk7:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-jclk7
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
alisd@kubeMaster:~$ kubectl logs -f my-scheduler-66cf896bfb-8j8sr -n kube-system
E0426 14:44:01.742799 1 reflector.go:126] k8s.io/client-go/informers/factory.go:133: Failed to list *v1.StorageClass: storageclasses.storage.k8s.io is forbidden: User "system:serviceaccount:kube-system:my-scheduler" cannot list resource "storageclasses" in API group "storage.k8s.io" at the cluster scope
E0426 14:44:02.743952 1 reflector.go:126] k8s.io/client-go/informers/factory.go:133: Failed to list *v1.StorageClass: storageclasses.storage.k8s.io is forbidden: User "system:serviceaccount:kube-system:my-scheduler" cannot list resource "storageclasses" in API group "storage.k8s.io" at the cluster scope
alisd@kubeMaster:~$ kubectl describe clusterrolebinding my-scheduler-as-kube-scheduler
Name: my-scheduler-as-kube-scheduler
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: system:kube-scheduler
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount my-scheduler kube-system
kubectl describe pod annotation-second-scheduler
alisd@kubeMaster:~$kubectl描述clusterrolebinding my scheduler为kube scheduler
名称:我的调度程序作为kube调度程序
标签:
注释:
角色:
种类:ClusterRole
名称:系统:kube调度程序
学科:
类名称命名空间
---- ---- ---------
ServiceAccount我的调度程序kube系统
alisd@kubeMaster:~$ kubectl describe serviceaccount my-scheduler -n kube-systemName: my-scheduler
Namespace: kube-system
Labels: <none>
Annotations: <none>
Image pull secrets: <none>
Mountable secrets: my-scheduler-token-68pvk
Tokens: my-scheduler-token-68pvk
Events: <none>
alisd@kubeMaster:~$kubectl描述服务帐户我的计划程序-n kube系统名称:我的计划程序
名称空间:kube系统
标签:
注释:
图像提取秘密:
可装载秘密:my-scheduler-token-68pvk
令牌:my-scheduler-token-68pvk
活动:
….服务帐户系统:服务帐户:kube系统:我的调度程序需要与以下群集范围的角色关联系统:kube调度程序,以便访问资源。我的计划程序将具有与默认计划程序相同的权限 还要注意,我们创建了一个专用的服务帐户my scheduler,并将集群角色system:kube scheduler绑定到该帐户,以便它可以获得与kube scheduler相同的权限 我找到了解决办法 添加以下行:
- apiGroups:
- storage.k8s.io
resources:
- storageclasses
verbs:
- watch
- list
- get
到该命令输出的末尾(这将打开一个文件供您编辑):
使用我部署的调度程序的pod现在正在运行
alisd@kubeMaster:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
annotation-second-scheduler 1/1 Running 0 9m33s
alisd@kubeMaster:~$ kubectl describe clusterrolebinding my-scheduler-as-kube-scheduler
Name: my-scheduler-as-kube-scheduler
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: system:kube-scheduler
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount my-scheduler kube-system
kubectl describe pod annotation-second-scheduler
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 12m my-scheduler Successfully assigned default/annotation-second-scheduler to kubemaster
Normal Pulled 12m kubelet, kubemaster Container image "k8s.gcr.io/pause:2.0" already present on machine
Normal Created 12m kubelet, kubemaster Created container pod-with-second-annotation-container
Normal Started 12m kubelet, kubemaster Started container pod-with-second-annotation-container
要添加到ali saaad解决方案答案中,我还必须将“csinodes”添加到资源中,以便能够调度pod,所以它看起来像:
- apiGroups:
- storage.k8s.io
resources:
- csinodes
- storageclasses
verbs:
- watch
- list
- get
您好,您能运行
kubectl description pods$POD\u NAME
吗?它的状态是什么当我运行kubectl descripe pods$POD_NAME我没有得到任何事件你可以查看第二个调度程序的日志,这家伙在干什么?我如何检查第二个调度器的日志kubectl logs-f my-scheduler-66cf896bfb-8j8sr-n kube system
我已经有了第二个调度器的服务帐户:我的调度器作为kube调度器此服务帐户需要与我的调度器作为kube调度器clusterrolebinding
,你能检查一下你是否拥有它吗kubectl get clusterrolebinding
?我正在运行“kubectl描述clusterrolebinding我的调度程序为kube调度程序”和“kubectl描述服务帐户我的调度程序-n kube系统”,请检查我的问题,我已经完全修改了你也编辑了角色
- apiGroups:
- storage.k8s.io
resources:
- csinodes
- storageclasses
verbs:
- watch
- list
- get