Kubernetes – linux ve genelde kullandığımız diğer ürünler üzerinde kullandığımız işinize yarayacak bazı komutları paylaşıyorum;
Kubernetes üzerinde çalışmayan – Running ve Completed durumda olmayan tüm podların delete edilmesi için;
kubectl get po -A -o wide| grep -vE "Compl|Runn"|awk {'print $1,$2'}|grep -v NAMESPACE|sed "s,^,kubectl delete pod --force -n ,g"|bash
Kubernetes üzerinde belirli podların içerisinde olan redislere flushall ve /data/ altındaki db file silmek için;
for pod in `kubectl get pods -l 'label' --field-selector=status.phase==Running -o name |cut -f 2 -d /`;do echo $pod;kubectl exec -it $pod -c redis -- redis-cli -s /sock/redis.sock flushall ; kubectl exec -it $pod -c redis -- rm -f /data/* ;done
Kubernetes – Php podu içerisinde opcache status için;
curl -sLO https://github.com/gordalina/cachetool/releases/latest/download/cachetool.phar
php cachetool.phar opcache:status --fcgi=/sock/php-fpm.sock
Portworx üzerinde disk ekleme – büyütme vb. için;
1-) drain portworx-node
pxctl service node drain-attachments submit --node <NODE_ID>
drain sürecini izlemek icin
pxctl service node drain-attachments status --job-id <ONCEKI_KOMUTUN_CIKTISINDAKI_JOB_ID>
2-) drain k8s node
kubectl drain <K8S_NODE_NAME> --delete-emptydir-data --ignore-daemonsets
3-) ilgili worker'da su komutlari calistir
systemctl stop portworx
rm -f /etc/systemd/system/portworx*
grep -q '/opt/pwx/oci /opt/pwx/oci' /proc/self/mountinfo && umount /opt/pwx/oci
pxctl service node-wipe --all
4-) diger workerlardan birinde sunlari calistir
silinecek node'un idsi ile
pxctl cluster delete <NODE_ID>
5-) vcenter'da gerekli disk ekleme cikarma islemini yap
6-) node'u uncordon et
kubectl uncordon <K8S_NODE_NAME>
Kubernetes secret içindeki sertifikaların okunulabilir olması için;
kubectl -n namespace get secret secretname -o=json | jq -r '.data["tls.crt"]' | base64 -d | openssl x509 -in /dev/stdin -noout -text
Loki üzerinde örnek bir namespace içindeki ngix loglarını incelemek için;
{namespace="namespace", container="nginx"} !~ "health_check.php" | pattern `<remote_ip> - - <time_local> "<request_method> <request_path> <http_ver>" <status> <bytes_sent> <referrer> "<user_agent>" <x_forwarded_for>` | line_format "{{ .x_forwarded_for }} - {{.remote_ip}} - {{.request_path}} - {{.status}} - {{.request_method}} - {{.user_agent}} - {{.referrer}}"
Loki ingress-nginx namespace için arama patterni;
{namespace="ingress-nginx"} |~ "armagan-armag" !~ `" 503` | pattern `<remote_ip> - - <time_local> "<request_method> <request_path> <http_ver>" <status> <bytes_sent> <referrer> "<user_agent>" <_>` | line_format "{{.remote_ip}} - - {{.request_path}} - {{.status}} - {{.request_method}} - {{.user_agent}} - {{.referrer}}"
Kubernetes ortamında “ingress-nginx” namespaceinde loglarını alıp, yalnızca belirli hata mesajlarını (HTTP 400 ve HTTP 404) getirme;
kubectl -n ingress-nginx logs pod --tail=100000 |grep -Ei 'HTTP/2.0" 400|HTTP/2.0" 404'| awk {print'$1,$3,$4,$5,$6,$7,$8,$9,$13,$14'}
Mongodump exclude pattern
mongodump -d databasename --excludeCollection=exclude-collection-name1 --excludeCollection=exclude-collection-name2 --gzip --archive=file.gz
Mongodump just 1 collection
mongodump -d middleware -c sales_order --gzip --archive=/tmp/salesorder.gz
Mongorestore full
mongorestore --gzip --archive=file.gz --db databasename
Mongorestore only one collection
mongorestore --gzip --nsInclude=DB_NAME.COLL_NAME --archive=file.gz
Bash – Bir sql file dosyasından core config data tablosunu yeni bir sql file dosyasına almaya yarar;
grep -E "(CREATE TABLE|INTO)"\ \`core_config_data\` dbdump.sql > core_config_data.sql