Table des matières

,

Notes Kubernetes k8s - Outils

Voir :

Voir aussi :

Arkade

Gestionnaire de paquets pour installer des outils K8S

https://github.com/alexellis/arkade

kubectl

Afin d’interagir avec Kubernetes, kubectl - la CLI permettant d'exécuter des commandes sur un cluster - est nécessaire.

En outre, pour peu qu'on ait à interagir avec plusieurs clusters, avec différents crédentials, dans plusieurs namespaces, il devient difficile de jongler de l'un à l'autre. Afin de faciliter cela, des programmes existent:

Krew

Krew is the plugin manager for kubectl command-line tool.

asdf plugin add krew
asdf install krew latest
asdf set --home krew latest

Kubetail

https://github.com/johanhaleby/kubetail

kubectx / kubens

Voir :

Permet de changer le contexte courant et le namespace courant

Voir :

apt install kubectx

Migrating to Kubectx and Kubens From KUBECONFIG

# Reference all your config files so Kubectl load them all
$ export KUBECONFIG=~/.kube/cluster-1:~/.kube/cluster-2:~/.kube/cluster-3
 
 
# Save a merged version of the current config to a new file
$ kubectl config view --flatten > ~/.kube/.config

kube-ps1

Permet d'afficher au prompt les contexte et namespace courants

Helm

Templating & package manager

Helm est un package manager pour kubernetes, permettant de déployer facilement des composants sous forme de “Charts”.

Install

sudo snap install helm --classic

Dépôts Bitnami :
https://github.com/bitnami/charts/tree/main/bitnami

Exemple avec OpenEBS

helm repo add openebs https://openebs.github.io/charts
helm repo update
helm search repo openebs
helm show values openebs/openebs > value-openebs.yml
 
kubectl create ns openebs
helm install openebs openebs/openebs -f value-openebs.yml -n openvbs
 
helm upgrade openebs openebs/openebs --namespace openvbs --set legacy.enable=true --reuse-vakues

k9s

snap install k9s --devmode
ln -s /snap/k9s/current/bin/k9s /usr/local/bin/

popeye

stern

nerdctl

Équivalent de la commande docker / podman / crictl / ctr mais pour ContainerD

Voir Vidéo Docker vs Containerd: Understanding the Differences and Choosing the Right Containerization Tool

LinkerD

(Conçurent de Istio)

Istio

(Conçurent de LinkerD)

Kubectl (kubernetes-client)

Install de kubectl

sudo apt-get install kubernetes-client

ou

VERSION=$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
curl -LO https://storage.googleapis.com/kubernetes-release/release/$VERSION/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

Config

mkdir $HOME/.config/
kubectl completion bash >> $HOME/.config/bash_completion

Conf

${HOME}/.kube/config ou $KUBECONFIG

~/.bashrc

alias k=kubectl
complete -F __start_kubectl k
 
alias kall="kubectl api-resources --namespaced=true -o name | xargs -i kubectl get {} -o name"
alias kapp="kubectl apply -f"
alias kdel="kubectl delete -f"
alias ksys="kubectl -n kube-system"
 
kshow() {
    kubectl get "$@" -o yaml | vim -c "set ft=yaml" -c "g/^  managedFields:/;/^  name/-1d" -c "noh" -
}
 
alias kports='kubectl get pods -o custom-columns="POD:.metadata.name,PORTS:.spec.containers[*].ports[*].containerPort"'
 
alias kcc='kubectl config current-context'
alias kg='kubectl get'
alias kga='kubectl get all --all-namespaces'
alias kgp='kubectl get pods'
alias kgs='kubectl get services'

Dashboard

Voir :

Installation

helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

dashboard-admin.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
kubectl apply -f dashboard-admin.yaml

Accès

kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443
# kubectl -n NAMESPACE create token SERVICE_ACCOUNT
kubectl -n kubernetes-dashboard create token admin-user

Source : https://upcloud.com/resources/tutorials/deploy-kubernetes-dashboard

Pour avoir les graphiques il faut installer Metrics-server

Stockage

https://github.com/utkuozdemir/pv-migrate?

Old

kubectl apply  -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
#kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
# kubectl proxy
Starting to serve on 127.0.0.1:8001

Notes WebUI Rancher

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest