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-kube
Sortie: 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é