1、kubectl自动补全
# setup autocomplete in bash, bash-completion package should be installed first.
$ source <(kubectl completion bash)
# setup autocomplete in zsh
$ source <(kubectl completion zsh)
2、查看一个命名空间下的所有资源
# 需要修改{namespace} 为实际的 namespace
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n {namespace}
3、查看哪些 Kubernetes 资源在名字空间中,哪些不在名字空间中
# 位于名字空间中的资源
kubectl api-resources --namespaced=true
# 不在名字空间中的资源
kubectl api-resources --namespaced=false
4、通过标签筛选需要查看的Pod
- 使用基于等值的标签选择算符
kubectl get pods -l environment=production,tier=frontend
- 使用基于集合的需求
kubectl get pods -l 'environment in (production),tier in (frontend)'
- 实现值的或操作
kubectl get pods -l 'environment in (production, qa)'
- 通过exists运算符限制不匹配
kubectl get pods -l 'environment,environment notin (frontend)'
5、标记一个 Node 为不可调度,重启节点或者执行其他维护操作可用
kubectl cordon $NODENAME
6、配置harbor私有仓库的secret
# 第一种方式
kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
# 第二种方式,运行了 docker login 命令,可以复制该镜像仓库的凭证到 Kubernetes
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=<path/to/.docker/config.json> \
--type=kubernetes.io/dockerconfigjson
7、生成yaml模板
在工作中可以先生成一个资源配置模板,然后通过修改这个模板来创建相应资源。
kubectl create deployment nginx --image=nginx --dry-run=client -oyaml > dp-nginx.yaml
8、节点下线/维护
先设置节点为不可调度,然后重新调度此节点上面的pod至其他的节点。
kubectl cordon my-node # 标记 my-node 节点为不可调度
kubectl drain my-node --delete-emptydir-data --ignore-daemonsets --force # 对 my-node 节点进行清空操作,为节点维护做准备
kubectl uncordon my-node # 标记 my-node 节点为可以调度