• k8s相关工作中常用命令


    ==================================== prometheus ===================================================

    reload prometheus

    curl -X POST http://10.130.16.246:31190/-/reload

    prometheus tsdb命令帮助

    ./tsdb --help-long

    tsdb 查看block信息

    ./tsdb ls /data
    ./tsdb ls -h /data

    tsdb 备份

    ./tsdb dump

    tsdb 分析block

    ./tsdb analyze --limit=20 /data 01F0V6SQ072HVVBVKW2SN73AV8

    ==================================== k8s ==========================================================
    官方命令参考:
    https://kubernetes.io/zh/docs/reference/kubectl/cheatsheet/

    容器外执行命令

    kubectl exec etcd-master01 -n kube-system "ls"

    使用patch更新 资源yaml

    需要写一个yaml文件片段, 格式和资源文件一样

    kubectl patch deployment retainkeys-demo --patch "$(cat patch-file-retainkeys.yaml)"

    列出以标签过滤后的 Pod 的所有容器

    要获取匹配特定标签的 Pod,请使用 -l 参数。以下匹配仅与标签 app=nginx 相符的 Pod。

    kubectl get pods --all-namespaces -o=jsonpath="{..image}" -l app=nginx

    列出以命名空间过滤后的 Pod 的所有容器

    要获取匹配特定命名空间的 Pod,请使用 namespace 参数。以下仅匹配 kube-system 命名空间下的 Pod。

    kubectl get pods --namespace kube-system -o jsonpath="{..image}"

    查看pod 标签

    kubectl get pods --show-labels -n monitoring

    查看node的标签

    kubectl get no --show-labels

    查看pod中容器name,根据标签

    kubectl get po -n monitoring -o jsonpath="{..name}" -l app=pod-gpu-metrics-exporter

    进入指定容器 -c

    kubectl exec -it pod-gpu-metrics-exporter-65r8f -n monitoring -c pod-nvidia-gpu-metrics-exporter sh

    service无法访问,查看endpoints

    kubectl get ep -n monitoring

    替换重启pod,实现configmap热更新

    kubectl get po prometheus-0 -n monitoring -o yaml |kubectl replace --force -f -

    查看节点labels

    kubectl get node --show-labels=true

    设置节点lable

    kubectl label node 10.73.1.120 nstack/gpu-model=2080ti --overwrite

    强制删除 termining pod

    kubectl delete pod ha-70-zookeeper-1 --force --grace-period=0

    Pod 仍处于 Unknown 状态

    kubectl patch pod -p '{"metadata":{"finalizers":null}}'

    查看yaml字段的解释

    kubectl explain pods.spec.nodeName

    rke k8s组件log:

    /var/lib/rancher/rke

    驱逐pod,命令node节点开始释放所有pod,并且不接收新的pod进程

    kubectl drain [node-name] --force --ignore-daemonsets --delete-local-data

    查看api信息

    kubectl get --raw /apis/metrics.k8s.io | jq .
    kubectl get --raw /api/v1/namespaces/kubeflow/services/ptcnowivuxhvsed | jq .

    进入pod指定的container中

    kubectl exec -it prometheus-cloud-0 -n monitoring sh -c busybox

    获取 Pod 的唯一标识 uid,可通过命令

    kubectl get pod pod名 -o jsonpath={.metadata.uid}

    查看卷的持久化信息

    findmnt /var/lib/kubelet/pods/24373a77-badf-4a3b-bc8b-eb5c1e97979c/volumes/kubernetes.io~csi/pvc-9a12e07e-67f4-477d-85b2-e3b74d39d18f/mount

    get api资源

    kubectl get --raw /api/v1/namespaces/kube-system/endpoints/kube-controller-manager | jq .

    查看证书有限期

    (rke部署)

    for i in /etc/kubernetes/ssl/*.pem; do echo $i; openssl x509 -in $i -text -noout|egrep "Not Before|Not After";echo "-----------"; done

    (kubeadm部署)

    for i in /etc/kubernetes/pki/*.crt;do echo $i; openssl x509 -in $i -text -noout|egrep "Not Before|Not After";echo "-----------";done

    查看serviceaccount 用户 secret

    kubectl get secret
    kubectl describe secret default-token-jtqck

    kubectl 自动补全

    source <(kubectl completion bash)
    echo "source <(kubectl completion bash)" >> ~/.bashrc

    k8s secret、sa token查看

    kubectl get secret
    kubectl describe secret default-token-jtqck
    ==================================== k8s service ======================================================

    k8s service & DNS

    endpoints ip

    pod_name.svc_name.namespace_name.svc.cluster.local

    rabbitmq-0.rabbitmq.monitoring.svc.cluster.local

    cluster ip (pod间通信)

    svc_name.namespace_name.svc.cluster.local

    rabbitmq.monitoring.svc.cluster.local

    sh-4.4# curl prometheus.monitoring.svc.cluster.local:9090
    Found.

    pod 间通信(待确定)

    pod_name.svc_name

    rabbitmq-0.rabbitmq

    svc_name.namespace_name.svc

    prometheus.monitoring.svc

    ==================================== etcd ======================================================
    https://rancher.com/docs/rancher/v2.x/en/troubleshooting/kubernetes-components/etcd/

    查看集群成员状态

    etcdctl --write-out=table member list

    查看端点状态(表格形式输出)

    etcdctl --write-out=table --endpoints=$ENDPOINTS endpoint status
    etcdctl -w table endpoint status

    docker外查看端点状态(也能查看节点角色)

    docker exec -it etcd sh -c "etcdctl --write-out=table endpoint status"

    列出集群所有节点状态

    docker exec -it etcd sh -c "etcdctl -w table endpoint --cluster status"

    在使用--cluster时候,ETCDCTL_ENDPOINTS,否者会报4001端口的endpoint错

    docker exec -e ETCDCTL_ENDPOINTS=$(docker exec etcd /bin/sh -c "etcdctl member list | cut -d, -f5 | sed -e 's/ //g' | paste -sd ','") etcd etcdctl endpoint status --write-out table

    endpoint 健康状态

    docker exec -it etcd sh -c "etcdctl -w table endpoint health"

    测试集群性能

    etcdctl check pref

    手动切换leader

    etcdctl move-leader

    rke etcd debug level

    docker run --net=host -v $(docker inspect kubelet --format '{{ range .Mounts }}{{ if eq .Destination "/etc/kubernetes" }}{{ .Source }}{{ end }}{{ end }}')/ssl:/etc/kubernetes/ssl:ro appropriate/curl -s -XPUT -d '{"Level":"DEBUG"}' --cacert $(docker exec etcd printenv ETCDCTL_CACERT) --cert $(docker exec etcd printenv ETCDCTL_CERT) --key $(docker exec etcd printenv ETCDCTL_KEY) $(docker exec etcd printenv ETCDCTL_ENDPOINTS)/config/local/log

    etcd info(default) level

    docker run --net=host -v $(docker inspect kubelet --format '{{ range .Mounts }}{{ if eq .Destination "/etc/kubernetes" }}{{ .Source }}{{ end }}{{ end }}')/ssl:/etc/kubernetes/ssl:ro appropriate/curl -s -XPUT -d '{"Level":"INFO"}' --cacert $(docker exec etcd printenv ETCDCTL_CACERT) --cert $(docker exec etcd printenv ETCDCTL_CERT) --key $(docker exec etcd printenv ETCDCTL_KEY) $(docker exec etcd printenv ETCDCTL_ENDPOINTS)/config/local/log

    列出所有 前缀是/ 的keys, 其实就是所有的keys

    etcdctl get --prefix --keys-only /

    列出所有 configmaps(即前缀是/registry/configmaps)

    etcdctl get --prefix --keys-only /registry/configmaps

    列出3个前缀是/registry/minions的keys

    etcdctl get --prefix --keys-only --limit=3 /registry/minions

    获取一个key的value

    etcdctl get -w json /registry/persistentvolumes/pvc-1a08fef0-46cd-4724-b91b-b53bacc720e3 | jq .

    默认100ms超时配置

    --heartbeat-interval and --election-timeout

    改logs level 为Warning之上

    https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/configuration.md#--log-level

    备份

    etcdctl --write-out=table snapshot save snapshot.db

    查看备份状态

    etcdctl --write-out=table snapshot status snapshot.db
    ==================================== storage ========================================================

    csi log查看

    kubectl logs instorage-csi-node-d7kr2 -c instorage-csi --tail=100 |grep 'NodeStageVolume'

    客户端,iscsi target查看

    iscsiadm -m session

    客户端,发现target

    iscsiadm -m discovery -t sendtargets -p IP:port
    iscsiadm -m discovery -t sendtargets -p 192.168.100.254

    客户端,挂载target

    iscsiadm -m node -T targetname --login

    客户端,卸载target

    iscsiadm -m node -T targetname --logout

    target服务端,查看target

    tgt-admin --show

    查看设备路径

    ll /dev/disk/by-path

    查看多路径状态

    multipath -ll

    查看多路径信心

    multipath -v3

    查看多路径服务的状态

    mpathconf

    dd命令创建指定大小的文件

    dd if=/dev/zero of=test bs=1M count=1000

    删除单路径设备

    echo 1 > /sys/block/sdX/device/delete

    删除多路径设备

    multipath -f /dev/dm-X

    以下命令显示所有设备映射器设备及其主、副号码。副号码确定 dm 设备的名称。例如:副号码 3 与多路径的设备 /dev/dm-3 对映

    dmsetup ls
    mpathd (253:3)

    删除多路径failed faulty running

    multipath -ll | grep sd | grep failed | awk -F":" '{print $4}' | awk '{print $2}' | while read LUN ;do echo 1 > /sys/block/${LUN}/device/delete; done

    删除多路径设备,但是in use的不会被删除,相当于刷新

    multipath -F

    列出存储池

    icfs osd lspools

    列出rbd images

    rbd -p stack ls

    查看设备依赖

    lsblk -s
    ==================================== docker ========================================================

    harbor验证

    配置docker/etc/docker/daemon.json,添加insecure-registries,否则会出现x509证书问题

    {
    "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"],
    "insecure-registries" : ["registry.navinfo.com","https://gcr.io"],
    "live-restore": true
    }

    登录harbor

    docker login registry.navinfo.com

    导出已有镜像为tar文件

    docker save csiplugin:v2.2.1 -o csiplugin-v2.2.1.tar

    加载镜像到本地

    docker load -i csiplugin-v2.2.1.tar

    给镜像打tag (仓库tag)

    docker tag csiplugin:v2.2.1 registry.navinfo.com/instorage/csiplugin:v2.2.1

    推送到远程仓库

    docker push registry.navinfo.com/instorage/csiplugin:v2.2.1

    构建images(在dockerfile目录下)

    docker build -t csiplugin:v2.2.0 .

    打tag

    docker tag csiplugin-v2.2.0.tar:v2.2.0 registry.navinfo.com/instorage/csiplugin:v2.2.0

    push镜像到harbor,宿主节点配置了证书

    docker push registry.navinfo.com/instorage/csiplugin:v2.2.0

    在执行清除镜像之前先查看镜像和容器的数量

    docker system df

    删除无容器使用的镜像,外加条件:创建于10天前、限于应用程序image

    docker image prune -a --force --filter "label=type=appimage" --filter "until=240h"

    删除所有不使用的镜像

    docker image prune --force --all或者docker image prune -f -a

    Docker prune 命令

    删除 所有未被 tag 标记和未被容器使用的镜像:

    docker image prune

    删除 所有未被容器使用的镜像:

    docker image prune -a

    删除 所有停止运行的容器:

    docker container prune

    删除 所有未被挂载的卷:

    docker volume prune

    删除 所有网络:

    docker network prune

    删除 docker 所有资源:

    docker system prune

    ========================================== clush =========================================

    从本地拷贝到远程服务器组

    clush -g test --copy /root/test.txt --dest /root/

    从远程服务器拷贝到本地

    clush -g test -rcopy /root/test.txt --dest /root/

    排除某个节点

    clush -g test -x 10.73.1.128 -rcopy /root/test.txt --dest /root/

    ========================================== virtualbox =========================================

    关机

    VBoxManage.exe controlvm -h
    VBoxManage.exe controlvm nineep poweroff

    启动

    VBoxManage.exe startvm nineep --type headless

    列出正在运行的vm

    VBoxManage.exe list runningvms

    ========================================== istio ============================================

    查看xds状态

    istioctl proxy-status

    查看xds配置

    istioctl proxy-config

    分析和诊断网格

    istioctl analyze
    istioctl experimental describe pod gcr03xzshy28zx0-v1-55b8f7c6c8-d2q69 -n 24f3af992e9e4ad28e7954fa4fdafb07-127

    istio web 工具: ControlZ

    ========================================== influxdb ==========================================

    检查数据

    influx_inspect verify -dir /data/influxdb/
    influx_inspect verify-seriesfile -dir /data/influxdb/data/

    登录数据库

    influx -database prometheus -host 'localhost' -port '8086'

    查看measurements=metrics(类似于table) metric_name=table_name, label=field, label_value=field_value

    show measurements

    查看时序数据

    show series

    查看时序数据的tag (metrics label)

    show tag keys

    查看metrics name, 及其value 数据类型

    show field keys

    查询10.60.34.23:9100节点的noad_load1

    select * from node_load1 where instance='10.60.34.23:9100'

    rebalance

    curl -X POST 'http://127.0.0.1:7076/rebalance?circle_id=0&operation=add&ha_addrs=10.60.191.251:7076'
    http://www.blog.sun-iot.xyz/posts/61185b64#数据同步机制

    debug

    curl -XPOST http://127.0.0.1:8086/debug/vars

    ========================================== ansible ===============================================

    dry run

    ansible-playbook -i inventory/storage.ini deploy-exporter.yml -t r1-xsky -C

    列出tags执行的task

    ansible-playbook -i inventory/all.ini test.yml -t exporter_config_resolv --list-tasks

    注意tags 和skip tags的先后顺序

    ansible-playbook -i inventory/all.ini deploy-exporter.yml --list-tasks --skip-tags r2-xsky -t node_exporter

  • 相关阅读:
    python3.8安装flask出现错误“ModuleNotFoundError: No module named '_ctypes'”
    利用virtualenvwrapper创建虚拟环境出现错误“/usr/bin/python: No module named virtualenvwrapper”
    CentOS7 下升级Python版本
    Python 定义动态变量
    Linux常用命令
    项目经验之:项目用到LinQ (总结)
    ListBox操作一些总结
    项目经验之:如CSDN一样的分页,我能否做这样的分页吗??????
    记上一笔,listbox展示项中,隐藏其中一项
    项目经验之:SQL一些简单问题中可以使用的技巧
  • 原文地址:https://www.cnblogs.com/nineep/p/14764347.html
Copyright © 2020-2023  润新知