
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
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
spec:
type: LoadBalancer
externalIPs:
- 192.168.0.10
kubectl run <podname> --image=nginx --generator=run-pod/v1 --dry-run -o yaml
kubectl diff -R -f .
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 rollout restart <deployment>
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.