Python interpreter not found

Mijn Rancher Cluster bevat nodes die allen draaien onder RancherOS. Nu zou ik die met Ansible playbooks willen beheren maar bij een standaard installatie van RancherOS krijg ik de foutmelding dat python niet gevonden kan worden en dat is een component dat Ansible nodig heeft om op de nodes de playbooks te kunnen uitvoeren.

$ ansible -m ping speeltuin-cp01
[WARNING]: No python interpreters found for host speeltuin-cp01 (tried ['/usr/bin/python', 'python3.7', 'python3.6', 'python3.5', 'python2.7', 'python2.6',
'/usr/libexec/platform-python', '/usr/bin/python3', 'python'])
speeltuin-cp01 | FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "module_stderr": "Shared connection to 192.168.178.155 closed.\r\n",
    "module_stdout": "/bin/sh: /usr/bin/python: No such file or directory\r\n",
    "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error",
    "rc": 127
}

Hier is echter een simpele oplossing voor…

Lees verder

Kubernetes ugrade via RKE

Het cluster dat ik in gebruik heb is aangemaakt met RKE (Rancher Kubernetes Engine) via een cluster.yml bestand en het commando ‘rke upZie hier de beschrijving. Nu is de versie die gebruikt wordt voor Kubernets v1.17.5 en ik wil nu upgraden naar versie 1.18.6. De versies die ondersteund worden vind je hier.

Om dit te doen met rke, dient de volgende regel in de cluster.yml file gezet te worden:

kubernetes_version: v1.18.6-rancher1-1

en vervolgens de upgrade starten met:

$ rke up

Eén voor één zullen de nodes nu ge-upgrade worden, eerst in ‘Cordoned‘ status, dan upgraden…

en vervolgens weer in ‘Active‘ status met de nieuwe versie.

Hoe simpel kan het zijn… 😉

Forceer een Kubernetes Deployment re-deploy

Soms wil je een re-deploy doen van de pods in een Kubernetes deployment.

Er is geen nieuwe versie van de image dus een ‘set image’ is hier dan niet van toepassing.

Het opschalen met ‘scale’ up en dan weer down geeft geen garantie dat de nieuwe pods blijven draaien. Ook wil je geen onderbreking in de bereikbaarheid van de deployment dus schalen naar 0 is geen optie (de strategy zal het wellicht ook niet toestaan).

Dus de enige optie is een ‘redeploy label‘ in de deployment patchen en dat ziet er alsvolgt uit:

$ kubectl -n your-namespace patch deployment your-deployment -p "{\"spec\": {\"template\": {\"metadata\": { \"labels\": { \"redeploy\": \"$(date +%s)\"}}}}}"

Als je een watch op de pods zet zie je de nieuwe pods ge-deployed worden.

$ kubectl get pods -w

Have fun!

Chaos in Kubenetes

Kubernetes maakt gebruik van deployments waarmee pods (daar waar de containers in zitten) herstart kunnen worden als zij vastlopen, teveel computer resources gebruiken, of een updated versie krijgen, enz. Dat is de kracht van K8S!

Maar kan elke applicatie er wel tegen om opnieuw ge-deployed te worden? Wat als er niets aan de hand is en de applicatie pas na lange tijd gaat herstarten? Bij NetFlix dachten de engineers in 2011 dat er een applicatie moest komen die applicaties willekeurig, expres, gaat herstarten, en ze noemden dit ‘Chaos Monkey‘.

Lees verder

Namespace blijft hangen op Terminating

Dan is dit wellicht de oplossing:

$ kubectl cluster-info
Kubernetes master is running at https://localhost:6443
KubeDNS is running at https://localhost:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Lees verder

SSL certificaten op CentOS

Op productie-servers of long-term deployment servers met privacy gevoelige data, dient de uitwisseling van data op een veilige manier te gebeuren. Voor webservers is dat HTTPS en daarvoor dient er een certificaat ingericht te worden. In dit artikel laat ik zien hoe je SSL Certificaten configureert op een Linux (CentOS) omgeving doet via de command prompt.

Lees verder