许吉友 - 运维

kubectl 命令行参考

概述:https://kubernetes.io/zh/docs/reference/kubectl/overview/

配置介绍:https://kubernetes.io/zh/docs/reference/kubectl/kubectl/

官方文档地址:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

port-forward 可以直接映射 Pod 的端口。

$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=jaeger -o jsonpath='{.items[0].metadata.name}') 15032:16686 &

查看集群信息:

$ kubectl cluster-info

kubectl -h 会列举出所有子命令及其分组。kubectl options 会列举出 kubectl 的全局选项。

kubectl 版本为 1.17.3

全局选项

一共 33 个全局选项。

子命令

一共有 41 个子命令,分成了 8 组。下面先列一下,再分别来学一下。

  1. Basic Commands (Beginner)

    create 根据文件或标准输入来创建资源

    expose 用于创建 service,公开端口

    run 在集群中运行指定的镜像

    set 为资源对象设置一些东西

  2. Basic Commands (Intermediate)

    explain 查看资源对象的Documentation

    get 展示一个或多个资源列表

    edit 编辑一个资源对象

    delete 通过文件,标准输入,资源名或 label 来删除资源对象

  3. Deploy Commands

    rollout 对资源进行管理,如回滚,查看状态,暂停资源等

    scale 扩展资源对象的数量

    autoscale 自动扩展

  4. Cluster Management Commands

    certificate 修改资源证书

    cluster-info 显示集群信息

    top 显示 (CPU/Memory/Storage) 使用情况

    cordon 将节点标记为不可调度

    uncordon 将节点标记为可调度

    drain 准备维护节点

    taint 更新一个或多个节点的 taints

  5. Troubleshooting and Debugging Commands

    describe 展示资源的详细信息

    logs 获取容器日志

    attach 连接到一个运行整的容器上

    exec 在运行中的运行里面运行命令

    port-forward 将 Pod 中的端口映射到本机

    proxy 创建一个 kube-apiserver 的代理

    cp 在主机和容器之间来回拷贝文件或目录

    auth 用于检查权限

  6. Advanced Commands

    diff 显示想要更新版本的变化

    apply 可自动创建或更新资源对象

    patch 为资源对象添加属性

    replace 替换资源对象

    wait 实验性:等待一种或多种资源的特定条件。

    convert 转换两个不同版本的配置

    kustomize 从目录或远程URL构建Kustomization目标。

  7. Other Commands

    api-resources 查看 API 资源有哪些

    api-versions 查看 API 版本有哪些

    config 修改 kubeconfig 文件

    plugin 提供用于与插件交互的实用程序。

    version 查看版本

常用命令

将 PV 从 release 状态变为 avaliveable:

$ kubectl patch pv pvc-7615872a-6328-46f3-9d3a-a636db7c0975 -p '{"spec":{"claimRef": null}}'

查看 node 的 labels:

$ kubectl get node --show-labels

自动补全

$ yum install bash-completion -y
$ source /usr/share/bash-completion/bash_completion
$ source <(kubectl completion bash)
$ echo "source <(kubectl completion bash)" >> ~/.bashrc

给 node 打标签

kubectl label nodes node1 key1=val1