Kubectl: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
Line 152: Line 152:
* [https://stackoverflow.com/questions/50952240/ K8s » Connect to Host Database]
* [https://stackoverflow.com/questions/50952240/ K8s » Connect to Host Database]
* [https://stackoverflow.com/questions/57764237 K8s » Ingress » ExternalName]
* [https://stackoverflow.com/questions/57764237 K8s » Ingress » ExternalName]
* [https://cert-manager.io/docs/ K8s » Ingress » Cert Manager]
* [https://www.keycloak.org/server/hostname K8s » Keycloak » Hostname]
* [https://www.keycloak.org/server/hostname K8s » Keycloak » Hostname]
* [https://getbetterdevops.io/k8s-ingress-with-letsencrypt/ K8s » Ingress » Letsencrypt]
* [https://medium.com/@pczarkowski/kubernetes-tip-run-an-interactive-pod-d701766a12 K8s » Interactive Pod]
* [https://medium.com/@pczarkowski/kubernetes-tip-run-an-interactive-pod-d701766a12 K8s » Interactive Pod]
* [https://spacelift.io/blog/restart-kubernetes-pods-with-kubectl K8s » Restart Pods]
* [https://spacelift.io/blog/restart-kubernetes-pods-with-kubectl K8s » Restart Pods]

Revision as of 21:28, 20 July 2023

sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg\
 https://packages.cloud.google.com/apt/doc/apt-key.gpg

cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list >/dev/null
deb [arch=$(dpkg --print-architecture)\
 signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg]\
 https://apt.kubernetes.io/ kubernetes-xenial main
EOF

sudo apt update
sudo apt install kubectl

Kubeconfig

Kubernetes components like kubelet, kube-controller-manager, or kubectl use the kubeconfig file to interact with the Kubernetes API. Usually, the kubectl or oc commands use the kubeconfig file.

The kubeconfig file's default location for kubectl or oc is the ~/.kube directory. Instead of using the full kubeconfig name, the file is just named config. The default location of the kubeconfig file is ~/.kube/config. There are other ways to specify the kubeconfig location, such as the KUBECONFIG environment variable or the kubectl --kubeconfig parameter.


The kubeconfig file is a YAML file containing groups of clusters, users, and contexts.

  • A cluster is a Kubernetes or OpenShift cluster.
  • A user is a credential used to interact with the Kubernetes API.
  • A context is a combination of a cluster and a user. Every time you execute an oc or kubectl command, you reference a context inside kubeconfig.


export KUBECONFIG=$HOME/.kube/chorke-academia-kubeconfig.yaml
chmod 600 $HOME/.kube/chorke-academia-kubeconfig.yaml

Kube Export

for n in $(kubectl get -o=name pvc,configmap,serviceaccount,\
secret,ingress,service,deployment,statefulset,hpa,job,cronjob);do
    mkdir -p $(dirname $n); kubectl get -o=yaml --export $n > $n.yaml
done
for n in $(kubectl get -o=name pvc,configmap,ingress,service,secret,\
deployment,statefulset,hpa,job,cronjob | grep -v 'secret/default-token');do
    kubectl get -o=yaml --export $n > $(dirname $n)_$(basename $n).yaml
done

Switch Knife

kubectl run -i --tty --rm debug --image=busybox --restart=Never -- sh
kubectl run -i --tty --rm debug --image=alpine  --restart=Never -- sh
apk add inetutils-telnet

kubectl config view --minify -o jsonpath='{.clusters[].name}'
kubectl cluster-info
kubectl config view

Knowledge

kubectl get deployment -A
kubectl get configmap -A
kubectl get service -A
kubectl get secret -A
kubectl get event -A
kubectl get pod -A
kubectl config --kubeconfig=./demo-config view --minify
kubectl config view --minify
kubectl config view

kubectl get -n=argocd -o=yaml secret argocd-initial-admin-secret
echo  RE83Uk81QTU5clZyLTlsdg== | base64 --decode
kubectl get pod academia-<hash> -n chorke -o yaml
kubectl describe pod academia-<hash> -n chorke
kubectl logs pod academia-<hash> -n chorke -p
kubectl delete pod academia-<hash> -n chorke
kubectl edit pod academia-<hash> -n chorke
kubectl get pod academia-<hash> -n chorke

kubectl get -n=argocd configmap
kubectl get -n=argocd deployment
kubectl get -n=argocd service
kubectl get -n=argocd secret
kubectl get -n=argocd event
kubectl get -n=argocd pod
kubectl edit -n=argocd configmap  argocd-rbac-cm
kubectl edit -n=argocd configmap  argocd-cm
kubectl edit -n=argocd deployment argocd-redis
kubectl edit -n=argocd service    argocd-redis
kubectl edit -n=argocd secret     argocd-secret
kubectl edit -n=argocd pod        argocd-app-ctrl-0
kubectl get -n=argocd -o=yaml configmap  argocd-rbac-cm
kubectl get -n=argocd -o=yaml configmap  argocd-cm
kubectl get -n=argocd -o=yaml deployment argocd-redis
kubectl get -n=argocd -o=yaml service    argocd-redis
kubectl get -n=argocd -o=yaml secret     argocd-secret
kubectl get -n=argocd -o=yaml pod        argocd-app-ctrl-0

sudo ss -tulwn | grep LISTEN
sudo ss -tulpn | grep LISTEN
sudo ss -tulpn | grep LISTEN | grep sshd
sudo ss -tulpn | grep LISTEN | grep minio
sudo ss -tulpn | grep LISTEN | grep resolve
sudo lsof -i -P -n | grep LISTEN

kubectl describe service academia -n academia 
kubectl describe service academia-auth -n academia 
nslookup <service-name>.<namespace>.svc.<cluster-domain>
nslookup academia-auth.academia.svc.cluster.local
apk add inetutils-telnet

References