When deleting a namespace is stuck in Terminating
state, you can find all resources in this namespace with kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n $your-ns-to-delete
Un super tuto pour déployer et utiliser Elasticsearch, Kibana et Metricbeat sur Kubernetes à l'aide des Helm charts Elastic officiels.
Attention, contrairement a ce qui était mentionné à l'origine dans cet article, les Helm charts Elastic be sont pas encore officiellement supporté avec Helm v3. L'utilisation de Helm v2 est donc recommandée.
Une bonne explication des différences entre les Helm charts et les opérateurs Kubernetes.
Une application mobile pour gérer ses clusters k8s depuis son smartphone
Un ensemble de CRD qui permettent de créer des ressources GCP via des templates kubernetes.
exemple:
apiVersion: sql.cnrm.cloud.google.com/v1beta1
kind: SQLInstance
metadata:
name: my-sql-instance
labels:
cost-center: "cc9"
spec:
databaseVersion: MYSQL_5_7
region: us-central1
settings:
tier: db-f1-micro
Un Space Invaders like pour killer des pods Kubernetes
Les commandes pour générer un kubeconfig à partir d'un Service Account K8S.
J'ai créé 2 scripts à partir de ces instructions:
- create-serviceaccount.sh pour générer le serviceaccount
- create-kubeconfig.sh pour générer le kubeconfig
AWS EKS gère désormais les node groups de workers en tant que ressources managées (avant il fallait gérer soit même les ASG de workers nodes).
En plus c'est déjà géré par la nouvelle version du provider terraform-aws
Présentation de ClusterAPI qui permet de provisionner depuis un cluster k8s existant (management cluster) d'autres clusters k8s (target clusters) dans le cloud grâce a des CRDs (ex: AWSCluster, MachineDeployment). C'est encore en alpha mais ça a l'air très prometteur.
Un plugin Helm qui permet de déclencher un rollback automatique suite à l'upgrade d'une release Helm en fonction d'une query Elasticsearch ou Prometheus
Une nouvelle vulnérabilité a été découverte dans runc qui permet aux containers Docker qui tournent en tant que root de devenir root sure le système hôte.
Il faut mettre à jour Docker (dernière version: 18.09.02).
Il est également recommandé de ne jamais faire tourner de containers en tant que root et de contrôler les images Docker qui tournent en production.
EDIT: voire également la communication côté K8S (https://kubernetes.io/blog/2019/02/11/runc-and-cve-2019-5736/) et AWS (https://aws.amazon.com/security/security-bulletins/AWS-2019-002/)
Un top-like pour kubernetes qui permet de monitorer en temps réel les resources K8S mais aussi d'afficher ou éditer leurs définition, d'afficher les logs des pods ou de lancer un kubectl exec
dessus.
Les Operators K8S permettent de déployer un produit (ex: Prometheus, ETCD out Vault...) sur K8S et de gérer toute la configuration sous forme d'objets K8S custom (CRDs). C'est selon moi un des concepts les plus prometteurs de K8S qui permet notamment de déployer le monitoring Prometheus en même temps qu'une appli dans K8S, mais aussi d'automatiser le provisioning de ressources externes cloud nécessaires au fonctionnement de l'application (bucket S3, record DNS ou base DynamoDB par exemple). L'article présente les Operators plus en détail et liste les 120 Operators existant actuellement avec le niveau de maturité de chacun.
Quelques optimisations pour utiliser EKS en production
Les prérequis a connaitre pour utiliser K8S avec le cloud provider AWS qui permet de provisionner automatiquement de ressources ELB et EBS pour les services de type Load balancer et les PersistentVolumes
Le getting started officiel Hashicorp pour déployer un cluster EKS avec Terraform.
Le code est ici: https://github.com/terraform-providers/terraform-provider-aws/tree/master/examples/eks-getting-started
EDIT:
NOTE: The usage of the specific kubernetes.io/cluster/ resource tags below are required for EKS and Kubernetes to discover and manage networking resources.
NOTE: The usage of the specific kubernetes.io/cluster/ resource tag below is required for EKS and Kubernetes to discover and manage compute resources.
voir également: https://github.com/kubernetes/cloud-provider-aws/blob/8f6e1e3d2cfa20a0deac088b9c4022d433500369/pkg/cloudprovider/providers/aws/tags.go#L30-L52
Je n'ai pas trouvé de doc officielle claire indiquant les tags à mettre en place sur les ressources AWS, mais après avoir passé 2 jours à débugguer pourquoi mes ELB ne se provisionnaient pas, puis pourquoi mes Nodes n'arrivaient pas à joindre le cluster EKS, je confirme que ces tags sont très importants à ajouter sur les ressources suivantes:
- VPC
- Subnets
- Security Groups
- Instances EC2
Un petit tuto pour créer un cluster AKS (K8S managé Azure) avec Terraform.
Un catalogue de helm charts façon DockerHub
L'article propose d'optimiser les coûts d'infrastructures et de bénéficier d'un pseudo chaos engineering sur les clusters k8s en utilisant des spots instances aws (ou équivalent dans les autres clouds).
Un tuto pour faire tourner une webapp sur un cluster K8S GKE minimal (3 nodes f1-micro / 600Mb RAM) pour 5$ par mois