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 节点为可以调度

星霜荏苒 居诸不息