admin

Folgende Tools werden lokal benötigt:

  • kubectl
  • kind und docker
  • helm

Cluster erstellen

kind create cluster
clusterctl init --infrastructure vsphere
clusterctl config cluster k8s-dev --kubernetes-version=v1.20.1 --control-plane-machine-count=3 --worker-machine-count=3 > deploy_dev.yaml
kubectl apply -f deploy_dev.yaml
kubectl get kubeadmcontrolplane --all-namespaces
clusterctl get kubeconfig k8s-dev > k8s-dev.kubeconfig
export KUBECONFIG=k8s-dev.kubeconfig

docker login
kubectl create secret generic regcred --from-file=.dockerconfigjson=/home/xforze/.docker/config.json --type=kubernetes.io/dockerconfigjson
kubectl create secret -n kube-system generic regcred --from-file=.dockerconfigjson=/home/xforze/.docker/config.json --type=kubernetes.io/dockerconfigjson
kubectl create secret -n tigera-operator generic tigera-pull-secret --from-file=.dockerconfigjson=/home/xforze/.docker/config.json --type=kubernetes.io/dockerconfigjson

# Install Weavenet
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"


# Install Calico
kubectl create -f https://docs.projectcalico.org/archive/v3.18/manifests/tigera-operator.yaml
kubectl create -f https://docs.projectcalico.org/archive/v3.18/manifests/custom-resources.yaml
</pre>

Add insecure Flag to vsphere-csi-driver

kubectl edit secret -n kube-system csi-vsphere-config
[Global]
insecure-flag = "true"

Add a Storageclass:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: example-vanilla-block-sc
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"  # Optional
provisioner: csi.vsphere.vmware.com
allowVolumeExpansion: true  # Optional: only applicable to vSphere 7.0U1 and above
parameters:
  datastoreurl: "ds:///vmfs/volumes/vsan:52cdfa80721ff516-ea1e993113acfc77/"  # Optional Parameter
  storagepolicyname: "vSAN Default Storage Policy"  # Optional Parameter
  csi.storage.k8s.io/fstype: "ext4"  # Optional Parameter

Add en example pvc:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-vanilla-block-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: example-vanilla-block-sc
kubectl run <podname> --image=nginx --generator=run-pod/v1 --dry-run -o yaml

kube-ps1

curl https://raw.githubusercontent.com/jonmosco/kube-ps1/master/kube-ps1.sh -o ~/kube-ps1.sh
echo "source ~/kube-ps1.sh" >> ~/.bashrc
echo "PS1='[\u@\h \W $(kube_ps1)]\$ '" >> ~/.bashrc

Krew:

Make sure that git is installed.
Run this command to download and install krew:

(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)

Add the $HOME/.krew/bin directory to your PATH environment variable. To do this, update your .bashrc file and append the following line:

echo 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"' >> ~/.bashrc

kubectx

kubectl krew install ctx
kubectl krew install ns
kubectl get pods -o jsonpath='{range .items[*]}{range .spec.containers[*]}{.name}{"\t"}{.resources.requests.memory}{"\n"}{end}{end}'

Debugging im Pod (tcpdump muss installiert sein):

kubectl exec my-app-pod -c nginx -- tcpdump -i eth0 -w - | wireshark -k -i -

Debugging auf dem Node

kubectl debug node/ip-10-250-104-130.eu-central-1.compute.internal -it --image=ubuntu -n default
kubectl exec -n default *debug pod name* -- tcpdump -i any -w - | wireshark -k -i -

GGF lokal Userrechte für Wireshark setzen:

sudo usermod -a -G wireshark $USER
cAdvisor (Container Advisor) bietet Containernutzern einen Überblick über die Ressourcennutzung und die Leistungsmerkmale ihrer laufenden Container.
Es ist ein laufender Daemon, der Informationen über laufende Container sammelt, aggregiert, verarbeitet und exportiert.
Insbesondere speichert er für jeden Container die Parameter der Ressourcenisolierung, die historische Ressourcennutzung und Histogramme der gesamten historischen Ressourcennutzung.
Diese Daten werden pro Container und maschinenweit exportiert.