k8s - bozkurtmithat/glaptop GitHub Wiki

#Kubernetes Notes

oto ssh

ssh-keygen -t rsa -b 4096
ssh-copy-id hedef_makine_ip

#Hedef makinede, ~/.ssh dizininin izinleri 700, authorized_keys dosyasının izinleri ise 600 olmalıdır:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

#Hedef makinede SSH servisinin anahtar tabanlı kimlik doğrulamayı desteklediğinden emin olun.
# /etc/ssh/sshd_config dosyasında aşağıdaki özellikler ayarlı olmalıdır.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

#değilse ayarlayın ve sshd servisini restart edin.
#sudo systemctl restart sshd

#Hedef makinede SELinux etkinse, authorized_keys dosyasının bağlamını düzeltmek gerekebilir:
restorecon -R -v ~/.ssh

#hala şifre soruyorsa authorized_keys dosyasındaki birden fazla kayıt olabilir. Silip adımları tekrar yapın. 

export config

alias k-cloud='export KUBECONFIG=/mylinuz/kubernetes-works/kubernetes-rke-configs/cloud/kube_config_cluster.yml'
#profili aktifle
k-cloud

#ilk komutu çalıştır.
kubectl get pods -A

tail pod logs

kubectl get pods -A | grep POD_NAME | grep Running| awk '{print "kubectl logs --tail=200 -f "$2" -n "$1" &"}'

ssh to pod

kubectl get pods -A | grep POD_NAME | grep Running| awk '{print "kubectl exec --stdin --tty  -n "$1" "$2"   -- /bin/sh"}'

list network connections belonging to the process

cat << 'EOF' > nc.sh
#!/bin/bash

if [ -z "$1" ]; then
    echo "Kullanım: $0 <PID>"
    exit 1
fi

PID=$1

if [ ! -d /proc/$PID ]; then
    echo "PID $PID bulunamadı."
    exit 2
fi

echo "PID: $PID için açık bağlantılar listeleniyor..."
echo ""

for PROTO in tcp tcp6 udp udp6; do
    FILE="/proc/net/$PROTO"

    [ -f $FILE ] || continue

    echo "### $PROTO bağlantıları ###"

    for INODE in $(ls -l /proc/$PID/fd/ 2>/dev/null | grep socket: | awk -F'[' '{print $2}' | awk -F']' '{print $1}'); do
        MATCH=$(grep " $INODE" $FILE)

        [ -z "$MATCH" ] && continue

        echo "$MATCH" | while read -r LINE; do
            LADDR=$(echo $LINE | awk '{print $2}')
            RADDR=$(echo $LINE | awk '{print $3}')
            STATE=$(echo $LINE | awk '{print $4}')

            LIP_HEX=${LADDR%:*}
            LPORT_HEX=${LADDR#*:}
            RIP_HEX=${RADDR%:*}
            RPORT_HEX=${RADDR#*:}

            IP4() {
                printf "%d.%d.%d.%d" 0x${1:6:2} 0x${1:4:2} 0x${1:2:2} 0x${1:0:2}
            }

            LIP=$(IP4 $LIP_HEX)
            LPORT=$((16#$LPORT_HEX))
            RIP=$(IP4 $RIP_HEX)
            RPORT=$((16#$RPORT_HEX))

            echo "Local : $LIP:$LPORT <--> Remote: $RIP:$RPORT State: $STATE"
        done
    done
    echo ""
done
EOF

chmod 777 nc.sh

restart pod

Eğer Pod bir Deployment tarafından yönetiliyorsa önerilen yöntem:

kubectl rollout restart deployment <deployment-adı> -n <namespace>

Eğer Pod bir Deployment, StatefulSet veya DaemonSet altında çalışıyorsa:

kubectl delete pod <pod-adı> -n <namespace>

Label / Annotation Patch ile Trigger Et

kubectl patch deployment <deployment-adı> -n <namespace> -p \
  "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"restarted-at\":\"$(date +%s)\"}}}}}"
⚠️ **GitHub.com Fallback** ⚠️