Je déploie un planificateur personnalisé après avoir suivi les instructions étape par étape comme mentionné dans la documentation Kubernetes
Voici [un lien] ( https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ )
Pods que je spécifie doit être planifié en utilisant le planificateur que j'ai déployé "my-scheduler" laisse en Pending.
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 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
......
alisd@kubeMaster:~$ kubectl get clusterrolebinding NAME AGE calico-node 46h cluster-admin 46h kubeadm:kubelet-bootstrap 46h kubeadm:node-autoapprove-bootstrap 46h kubeadm:node-autoapprove-certificate-rotation 46h kubeadm:node-proxier 46h my-scheduler-as-kube-scheduler 46h
........
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
... ....
3 Réponses :
Le compte de service system: serviceaccount: kube-system: my-scheduler doit être associé au rôle à l'échelle du cluster suivant system: kube-scheduler pour accéder aux ressources . my-scheduler aura les mêmes droits que le planificateur par défaut.
Notez également que nous avons créé un compte de service dédié my-scheduler et y lions le système de rôle de cluster: kube-scheduler afin qu'il puisse acquérir les mêmes privilèges que kube-scheduler. définir -a-déploiement-kubernetes-pour-le-planificateur
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: my-scheduler-as-kube-scheduler subjects: - kind: ServiceAccount name: my-scheduler namespace: kube-system roleRef: kind: ClusterRole name: system:kube-scheduler apiGroup: rbac.authorization.k8s.io
J'ai déjà un compte de service pour le 2ème planificateur: my-scheduler-as-kube-scheduler
Ce compte de service doit être lié à my-scheduler-as-kube-scheduler clusterrolebinding , pouvez-vous vérifier si vous l'avez ou non kubectl get clusterrolebinding ?
J'ai exécuté "kubectl describe clusterrolebinding my-scheduler-as-kube-scheduler" et "kubectl describe serviceaccount my-scheduler -n kube-system", veuillez vérifier ma question que j'ai modifiée
j'espère que vous avez également modifié le rôle kubernetes.io/docs/tasks/administer-cluster/...
J'ai trouvé une solution
Ajoutez ces lignes:
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
à la fin de la sortie de cette commande (cela ouvre un fichier que vous pouvez modifier) :
kubectl describe pod annotation-second-scheduler
Le pod utilisant le planificateur que j'ai déployé est maintenant en cours d'exécution
alisd@kubeMaster:~$ kubectl get pods NAME READY STATUS RESTARTS AGE annotation-second-scheduler 1/1 Running 0 9m33s
...... p>
kubectl edit clusterrole system:kube-scheduler
......
- apiGroups: - storage.k8s.io resources: - storageclasses verbs: - watch - list - get
Pour ajouter à la réponse de la solution ali saaad, j'ai également dû ajouter des "csinodes" aux ressources pour pouvoir planifier le pod, donc cela ressemble à:
- apiGroups: - storage.k8s.io resources: - csinodes - storageclasses verbs: - watch - list - get
Bonjour, pouvez-vous exécuter
kubectl describe pods $ POD_NAME? quel est son statutlorsque j'exécute kubectl describe pods $ POD_NAME, je n'obtiens aucun événement
vous pouvez vérifier les journaux du deuxième planificateur, que fait ce gars?
Comment puis-je vérifier les journaux du deuxième planificateur
journaux kubectl -f mon-planificateur-66cf896bfb-8j8sr -n système-kubeSortie: E0426 14: 45: 10.958513 1 reflector.go: 126] k8s.io/client-go/informers/factory.go:133: Impossible de lister * v1.StorageClass: storageclasses.storage.k8s.io est interdit: Utilisateur "system: serviceaccount: kube-system: my-scheduler" ne peut pas lister la ressource "storageclasses" dans le groupe d'API "storage.k8s.io" au niveau du cluster
pouvez-vous exécuter
kubectl get clusterrolebinding? il semble que le 2e ordonnanceur n'ait pas d'autorité