Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
veilletechno:kubernetes:iscsi:targetd [2019/02/03 15:39] – madko | veilletechno:kubernetes:iscsi:targetd [2019/02/03 15:56] (Version actuelle) – [Changer la classe de stockage par défaut] madko | ||
---|---|---|---|
Ligne 50: | Ligne 50: | ||
kubectl apply -f iscsi-provisioner-class.yaml | kubectl apply -f iscsi-provisioner-class.yaml | ||
</ | </ | ||
+ | |||
===== Création d'un secret pour les info de connexion à targetd ===== | ===== Création d'un secret pour les info de connexion à targetd ===== | ||
Ligne 60: | Ligne 61: | ||
Le login est **admin**. | Le login est **admin**. | ||
- | Le mot de passe est **secret**.\\ | + | Le mot de passe est **secret**. |
+ | ===== Contrôleur ===== | ||
+ | |||
+ | Le contrôleur a besoin de quelques autorisations pour surveiller les demandes de volumes persistents, | ||
+ | |||
+ | Sa définition yaml est la suivante : | ||
+ | |||
+ | < | ||
+ | kind: ClusterRole | ||
+ | apiVersion: rbac.authorization.k8s.io/ | ||
+ | metadata: | ||
+ | name: iscsi-provisioner-runner | ||
+ | rules: | ||
+ | - apiGroups: ["" | ||
+ | resources: [" | ||
+ | verbs: [" | ||
+ | - apiGroups: ["" | ||
+ | resources: [" | ||
+ | verbs: [" | ||
+ | - apiGroups: [" | ||
+ | resources: [" | ||
+ | verbs: [" | ||
+ | - apiGroups: ["" | ||
+ | resources: [" | ||
+ | verbs: [" | ||
+ | --- | ||
+ | kind: ClusterRoleBinding | ||
+ | apiVersion: rbac.authorization.k8s.io/ | ||
+ | metadata: | ||
+ | name: run-iscsi-provisioner | ||
+ | subjects: | ||
+ | - kind: ServiceAccount | ||
+ | name: iscsi-provisioner | ||
+ | namespace: kube-system | ||
+ | roleRef: | ||
+ | kind: ClusterRole | ||
+ | name: iscsi-provisioner-runner | ||
+ | apiGroup: rbac.authorization.k8s.io | ||
+ | --- | ||
+ | apiVersion: v1 | ||
+ | kind: ServiceAccount | ||
+ | metadata: | ||
+ | name: iscsi-provisioner | ||
+ | --- | ||
+ | kind: Deployment | ||
+ | apiVersion: extensions/ | ||
+ | metadata: | ||
+ | name: iscsi-provisioner | ||
+ | spec: | ||
+ | replicas: 1 | ||
+ | template: | ||
+ | metadata: | ||
+ | labels: | ||
+ | app: iscsi-provisioner | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: iscsi-provisioner | ||
+ | imagePullPolicy: | ||
+ | image: quay.io/ | ||
+ | args: | ||
+ | - " | ||
+ | env: | ||
+ | - name: PROVISIONER_NAME | ||
+ | value: iscsi-targetd | ||
+ | - name: LOG_LEVEL | ||
+ | value: debug | ||
+ | - name: TARGETD_USERNAME | ||
+ | valueFrom: | ||
+ | secretKeyRef: | ||
+ | name: targetd-account | ||
+ | key: username | ||
+ | - name: TARGETD_PASSWORD | ||
+ | valueFrom: | ||
+ | secretKeyRef: | ||
+ | name: targetd-account | ||
+ | key: password | ||
+ | - name: TARGETD_ADDRESS | ||
+ | value: 192.168.2.107 | ||
+ | serviceAccount: | ||
+ | </ | ||
+ | |||
+ | Ce contrôleur a pour but de fournir des volumes, des LUNs ISCSI aux pods demandeurs. Il répond donc aux pvc via des pv créer en tant que LUNs sur le serveur targetd. | ||
+ | |||
+ | Pour appliquer le yaml : | ||
+ | |||
+ | < | ||
+ | kubectl apply -f iscsi-provisioner-d.yaml -n kube-system | ||
+ | </ | ||
+ | |||
+ | On peut ensuite créer une PVC et un pod utilisateur pour valider l' | ||
+ | |||
+ | ===== Création d'une demande de volume de test ===== | ||
+ | |||
+ | Le but est de valider le travail du contrôleur avec une demande de volume persistent. Définition yaml : | ||
+ | |||
+ | < | ||
+ | kind: PersistentVolumeClaim | ||
+ | apiVersion: v1 | ||
+ | metadata: | ||
+ | name: myclaim | ||
+ | annotations: | ||
+ | volume.beta.kubernetes.io/ | ||
+ | spec: | ||
+ | accessModes: | ||
+ | - ReadWriteOnce | ||
+ | resources: | ||
+ | requests: | ||
+ | storage: 100Mi | ||
+ | </ | ||
+ | |||
+ | Pour l' | ||
+ | |||
+ | < | ||
+ | kubectl apply -f iscsi-provisioner-pvc.yaml | ||
+ | </ | ||
+ | |||
+ | Pour voir l' | ||
+ | |||
+ | < | ||
+ | kubectl get pvc | ||
+ | </ | ||
+ | |||
+ | Si tout se passe bien : | ||
+ | |||
+ | < | ||
+ | NAME STATUS | ||
+ | myclaim | ||
+ | </ | ||
+ | |||
+ | Sur le serveur targetd, on doit voir une nouvelle LUN (via targetcli) et un nouvel LV qui l' | ||
+ | |||
+ | ===== Changer la classe de stockage par défaut ===== | ||
+ | |||
+ | Nous avons vu que notre test de PVC explicite clairement sa classe de stockage. Si nous voulons que par défaut les pods qui ne précise rien à ce niveau parte sur notre classe de stockage iSCSI, il suffit de définir cette dernière comme classe par défaut. | ||
+ | |||
+ | Pour afficher les classes de stockage : | ||
+ | |||
+ | < | ||
+ | [root@node1 ~]# kubectl get sc | ||
+ | NAME | ||
+ | iscsi-targetd-vg-targetd | ||
+ | </ | ||
+ | |||
+ | Pour définir une classe comme classe par défaut : | ||
+ | |||
+ | < | ||
+ | kubectl patch storageclass iscsi-targetd-vg-targetd -p ' | ||
+ | </ | ||
+ | |||
+ | Résultat : | ||
+ | |||
+ | < | ||
+ | [root@node1 ~]# kubectl get sc | ||
+ | NAME | ||
+ | iscsi-targetd-vg-targetd (default) | ||
+ | </ | ||