最好不要越过 RC 直接创建 Pod, 通过 RC 管理 Pod,实现自动创建、补足、替换、删除 Pod,减少由于节点崩溃等意外造成的损失。
Blog
-
kubectl 操作记录
设置 master
kubectl label node node-master.foo.bar kubernetes.io/role=master node "node-master.foo.bar" labeled
查看集群组件信息
kubectl get cs
查看集群的 master api 地址
kubectl cluster-info kubectl cluster-info dump
查看集群的各种资源类型
kubectl api-resources | grep istio
kubectl get pods --namespace=kube-system
强制删除 pod
kubectl delete pod nginx-1849696770-2pk8t -n myspace --grace-period=0 --force
转发一个端口
kubectl -n monitoring port-forward deployment/getup-grafana 3000:3000 kubectl -n monitoring port-forward alertmanager-getup-prometheus-operator-alertmanager-0 9093:9093 kubectl -n monitoring port-forward prometheus-getup-prometheus-operator-prometheus-0 9090:9090
exec 执行长命令被截断,需要用 —
kubectl exec $POD_NAME tail -n 10 /var/log/newrelic_agent.log Error from server (NotFound): namespaces "10" not found 应该用 kubectl exec $POD_NAME -- tail -n 10 /var/log/newrelic_agent.log 或 kubectl exec $POD_NAME -- bash -c "tail -n 10 /var/log/newrelic_agent.log"
查看所有事件
kubectl get events
kubectl -n istio-system port-forward prometheus-6cabcdab97-mwptl 18080:9090 kubectl -n istio-system port-forward grafana-fabcd765b-vtcxp 18080:3000 kubectl -n istio-system port-forward kiali-8babb947c-b5g5m 18080:20001
kubectl api-resources
app=account_service kubectl logs --tail 10 -f -l app=$app -n default -c $app
kubectl get secret config1 -o json | jq '.data | map_values(@base64d)'
kubectl get all -n jenkins NAME READY STATUS RESTARTS AGE pod/jenkins-8d6cc58f-dnfv6 1/1 Running 0 3d5h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/jenkins ClusterIP 10.31.30.9
80/TCP 544d service/jenkins-agent LoadBalancer 10.31.25.64 172.170.0.41 50000:21700/TCP 544d service/jenkins-agent-public LoadBalancer 10.31.25.94 xx.xx.xx.xxx 50000:22289/TCP 402d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/jenkins 1/1 1 1 544d NAME DESIRED CURRENT READY AGE replicaset.apps/jenkins-7f57bfbd76 0 0 0 544d replicaset.apps/jenkins-8d6cc58f 1 1 1 367d 查看 pod 的名字
for pod in `kubectl get pods -n dev -o jsonpath={.items..metadata.name} `; do kubectl get pod $pod -n dev ; done查看 svc 的 ip
kubectx | grep gke_ | while read line; do echo $line; kubectl --context $line get svc istio-ingressgateway -n istio-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'; echo; done查看 image 和 containerID
kubectl get pods -n dev -o jsonpath='{range .items[*].status.containerStatuses[*]}{.image}{"\n"}{.containerID}{"\n\n"}{end}'用 go template
kubectl get nodes -l cloud.google.com/machine-family=n1 -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' -
mitmproxy 抓包分析
mitm.it
https://mitmproxy.org/
-
glusterfs
gluster volume info
-
jmap heap dump
HOW TO CAPTURE HEAP DUMP? – JMAP, – XX:+HEAPDUMPONOUTOFMEMORYERROR
切换到跑 java 进程所用的用户
[[email protected] etl] $ jmap -dump:live,file=/tmp/kafka_hdfs_1_minute.bin pid [[email protected] etl] $ jmap -dump:live,file=/tmp/kafka_hdfs_15_minute.bin pid
类似的工具还有 jps, jstack, jmap, etc.
-
vim + ctags
用 vim 写 python golang javascript 都需要跳转
brew install ctags
查看 ctags 支持的版本
ctags --list-languages
cat ~/.ctags
--langdef=Go --langmap=Go:.go --regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/ --regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/ --regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/ --exclude=vendor --exclude=build --exclude=node_modules --exclude=dist --exclude=venv --exclude=*.sql --langdef=less --langmap=less:.less --regex-less=/^[ t]*.([A-Za-z0-9_-]+)/1/c,class,classes/ --regex-less=/^[ t]*#([A-Za-z0-9_-]+)/1/i,id,ids/ --regex-less=/^[ t]*(([A-Za-z0-9_-]+[ tn,]+)+){/1/t,tag,tags/ --regex-less=/^[ t]*@medias+([A-Za-z0-9_-]+)/1/m,media,medias/ --langdef=js --langmap=js:.js.vue --regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*\{/\5/,object/ --regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*(=|:)[ \t]*function[ \t]*\(/\5/,function/ --regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*\[/\5/,array/ --regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*[^"]'[^']*/\5/,string/ --regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*(true|false)/\5/,boolean/ --regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*[0-9]+/\5/,number/ --regex-js=/(,|(;|^)[ \t]*(var|let|([A-Za-z_$][A-Za-z0-9_$.]+\.)*))[ \t]*([A-Za-z0-9_$]+)[ \t]*=[ \t]*.+([,;=]|$)/\5/,variable/ --regex-js=/(gulp\.task)/\1/,task/