Aller au contenu principal
Version : Suivant

FAQ

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Si je n'ai pas déployé de clusters Kubernetes, puis-je utiliser Chaos Mesh pour créer des expériences de chaos ?

Non. À la place, vous pouvez utiliser chaosd pour injecter des pannes sans Kubernetes.

J'ai déployé Chaos Mesh et créé des expériences PodChaos avec succès, mais j'échoue à créer une expérience NetworkChaos/TimeChaos. Le journal affiche ceci :

2020-06-18T02:49:15.160Z ERROR controllers.TimeChaos failed to apply chaos on all pods {"reconciler": "timechaos", "error": "rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp xx.xx.xx.xx:xxxx: connect: connection refused\""}

La raison est que chaos-controller-manager n'a pas pu se connecter à chaos-daemon. Vérifiez d'abord le réseau du Pod et ses politiques.

Si tout est en ordre, vous pouvez utiliser le paramètre hostNetwork pour résoudre ce problème comme suit :

Référence : https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/#hostport-services-do-not-work

Le compte administrateur par défaut de Google Cloud ne peut pas créer d'expériences de chaos. Comment résoudre ce problème ?

Le compte administrateur Google Cloud par défaut ne peut pas être vérifié par AdmissionReview. Créez un rôle administrateur et attribuez-le à votre compte pour lui accorder le privilège de créer des expériences de chaos. Par exemple :

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: role-cluster-manager-pdmas
rules:
- apiGroups: ['']
resources: ['pods', 'namespaces']
verbs: ['get', 'watch', 'list']
- apiGroups:
- chaos-mesh.org
resources: ['*']
verbs: ['get', 'list', 'watch', 'create', 'delete', 'patch', 'update']
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cluster-manager-binding
namespace: chaos-mesh
subjects:
# Google Cloud user account
- kind: User
name: USER_ACCOUNT
roleRef:
kind: ClusterRole
name: role-cluster-manager-pdmas
apiGroup: rbac.authorization.k8s.io

USER_ACCOUNT ci-dessus doit correspondre à votre adresse email Google Cloud.

Le démon renvoie une erreur du type version 1.41 is too new. The maximum supported API version is 1.39

Cela indique que la version API maximale acceptée par le démon Docker est 1.39, alors que le client dans chaos-daemon utilise par défaut 1.41. Vous pouvez choisir ces options pour résoudre le problème :

  1. Mettez à jour votre Docker vers une version plus récente.

  2. Utilisez Helm install/upgrade avec --set chaosDaemon.env.DOCKER_API_VERSION=1.39.

DNSChaos

Lors de l'exécution de DNSChaos dans OpenShift, des problèmes d'autorisation bloquent le processus

Si le message d'erreur ressemble à ceci :

Error creating: pods "chaos-dns-server-123aa56123-" is forbidden: unable to validate against any security context constraint: [spec.containers[0].securityContext.capabilities.add: Invalid value: "NET_BIND_SERVICE": capability may not be added]

Vous devez ajouter les Security Context Constraints (SCC) privilégiées au chaos-dns-server.

oc adm policy add-scc-to-user privileged -n chaos-mesh -z chaos-dns-server

Installation

Lors de l'installation de Chaos Mesh dans OpenShift, des problèmes d'autorisation bloquent le processus

Si le message d'erreur ressemble à ceci :

Error creating: pods "chaos-daemon-" is forbidden: unable
to validate against any security context constraint: [spec.securityContext.hostNetwork:
Invalid value: true: Host network is not allowed to be used spec.securityContext.hostPID:
Invalid value: true: Host PID is not allowed to be used spec.securityContext.hostIPC:
Invalid value: true: Host IPC is not allowed to be used securityContext.runAsUser:
Invalid value: "hostPath": hostPath volumes are not allowed to be used spec.containers[0].securityContext.volumes[1]:
Invalid value: true: Host network is not allowed to be used spec.containers[0].securityContext.containers[0].hostPort:
Invalid value: 31767: Host ports are not allowed to be used spec.containers[0].securityContext.hostPID:
Invalid value: true: Host PID is not allowed to be used spec.containers[0].securityContext.hostIPC:
......]

Vous devez ajouter le scc privilégié par défaut.

oc adm policy add-scc-to-user privileged -n chaos-mesh -z chaos-daemon

Échec de l'installation de Chaos Mesh avec le message : no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1"

Ce problème survient lors de l'installation de Chaos Mesh sur Kubernetes v1.15 ou antérieur. Nous utilisons par défaut apiextensions.k8s.io/v1, introduit dans Kubernetes v1.16 le 2019-09-19.

Pour installer Chaos Mesh sur une version de Kubernetes inférieure à v1.16, suivez ce processus :

  1. Créez manuellement les CRD via https://mirrors.chaos-mesh.org/<chaos-mesh-version>/crd-v1beta1.yaml.

  2. Ajoutez --validate=false. Sans cette configuration, des problèmes de compatibilité avec les changements cassants des CRD peuvent survenir. Exemple : kubectl create -f https://mirrors.chaos-mesh.org/v2.1.0/crd-v1beta1.yaml --validate=false.

  3. Utilisez Helm pour terminer l'installation, et ajoutez --skip-crds à la commande helm install.

Nous vous conseillons de mettre à niveau votre cluster Kubernetes en consultant la Politique de décalage de version de Kubernetes.

Chaosd

Échec avec l'erreur : attempt to write a readonly database

Lors de l'exécution de chaosd en mode commande ou service, si l'utilisateur actuel ne dispose pas des permissions d'écriture sur le fichier de base de données SQLite utilisé par chaosd, cette erreur se produit. Par défaut, le fichier se trouve dans le répertoire d'installation de chaosd à /usr/local/chaosd-v$VERSION-$OS-$ARCH/chaosd.db (par exemple, /usr/local/chaosd-v1.4.0-linux-amd64/chaosd.db).

Pour résoudre ce problème, accordez les permissions d'écriture sur le fichier de base de données :

# Replace the path with your actual chaosd installation directory
sudo chmod 666 /usr/local/chaosd-v*/chaosd.db
# Also ensure the directory is writable
sudo chmod 775 /usr/local/chaosd-v*/

Vous pouvez également exécuter chaosd avec les privilèges appropriés ou modifier le propriétaire du fichier pour l'utilisateur actuel.

Les expériences de chaos réseau impliquant tc et iptables nécessitent des privilèges sudo

Lors de la création d'expériences de chaos réseau utilisant tc (traffic control) ou iptables, vous devez exécuter les commandes chaosd avec sudo ou des privilèges root. Sans permissions adéquates, l'attaque de chaos échouera à s'appliquer et les opérations de récupération échoueront également.

Exemples de chaos réseau nécessitant sudo :

  • Délai, perte, duplication ou corruption réseau

  • Limitation de bande passante réseau

  • Partition réseau

Pour exécuter ces expériences :

# Command mode
sudo chaosd attack network delay --device eth0 --latency 100ms

# Service mode - start the service with sudo
sudo chaosd server

Sans sudo, vous pourriez voir des erreurs comme "permission denied" ou "operation not permitted" lors de la modification des configurations réseau.