侧边栏壁纸
  • 累计撰写 43 篇文章
  • 累计创建 9 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Kubernetes集群资源常用命令

landonchan
2023-10-06 / 0 评论 / 0 点赞 / 7 阅读 / 3988 字
温馨提示:
欢迎留言讨论!若内容或图片失效,请留言反馈。若不小心影响到您的利益,请联系我们删除。

备份资源文件到本地

在做集群维护中,备份很重要。以下virtualservice为例。

kubectl --kubeconfig=/Users/xxx/Documents/devops/xxx get virtualservice -n xxx -o=name | xargs -I {} sh -c 'kubectl --kubeconfig=/Users/xxx/Documents/devops/xxx -n xxx get {} -o=yaml > $(basename {}).yaml'

批量调整副本集

在做sass 软件私有化的过程中,为了缩减成本,笔者一般会先把副本集调成1,正式上线时才会按需调整。

kubectl --kubeconfig=xxxx get deployments -n xxxx --no-headers | awk '{print $1}' | xargs -I {} kubectl --kubeconfig=xxxx scale deployment -n xxxx {} --replicas=1

deployment批量增加 label

在笔者使用阿里泳道功能时,需要给指定的多个服务进行 label 补充。

kubectl --kubeconfig=xxx get deployments -n xxx -o name \
| xargs -I {} kubectl --kubeconfig=xxx patch {} -n xxx -p '{"spec":{"template":{"metadata":{"labels":{"ASM_TRAFFIC_TAG":"version-base"}}}}}' --type merge

关键字查询输出资源名称

笔者采用自定义资源串接 CICD 流程,经常会使用此命令进行故障定位。

kubectl get  crd -n xxx -o json --kubeconfig=xxx | jq -r '.items[] | select(. | tostring | contains("process")) | .metadata.name'

以上命令就是过滤 资源 crd 中包含 process 关键字,并输出 crd 的资源名称。

过滤副本集为0的资源

经常性要做一些资源的回收操作会使用此命令。

kubectl get deployments --all-namespaces -o jsonpath='{range .items[?(@.spec.replicas==0)]}{.metadata.namespace} {.metadata.name}{"\n"}{end}' --kubeconfig=<config_path>

如果需要指定 namespace 就把--all-namespaces改成-n <target_namespace>。

指定 config ,命名空间获取 deployment

kubectl get deployments -n aaa -o jsonpath='{.items[*].metadata.name}' --kubeconfig=xxx -o wide

这个命令是笔者整理 sass 软件与功能项目时用到的。

查询项目的CRD

kubectl get crd -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' --kubeconfig=xxx -n xxx | grep app_name

管理项目 crd资源时用的。

过滤 deployments

kubectl get deployments --kubeconfig=xxxx -n a,b,c -o json | jq 'select(.spec.template.metadata.labels.version!="base")'

泳道开发时可用。

先查crd再删

kubectl get  crd -n xxx --kubeconfig=xxx |grep  关键字 | awk '{print $1}' | xargs kubectl delete  crd -n xxx --kubeconfig=xxx

管理项目 crd资源时用的。

label 过滤online

笔者的上线计划 crd 过滤。

kubectl get crd -n xxx --kubeconfig=xxx -l online=abc
kubectl get crd -n xxx --kubeconfig=xxx -l online=xxx,project=xxx

获取指定 namespace 下应用名称

项目维护用。

kubectl get deployments -n xxx -o name --kubeconfig=xxx

0

评论区