Kubernetes常用指令

一、Kubernetes 自动补齐

[root@k8s-master ~]# yum -y install bash-completion                     //安装自动补齐软件
[root@k8s-master ~]# source <(kubectl completion bash)               //临时开启自动补齐功能
[root@k8s-master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc    //永久开启自动补齐功能

二、Kubernetes 基础命令

格式:kubectl + [command] + [type] + [name]+ [flags]
说明:
command:    指定要对一个或多个资源执行的操作,例如create、get、describe、delete等。(增删改查)
type:        指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写形式。
name:    指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息: kubectl get pods。
flags:         指定可选的参数。例如,可以使用-s或-server参数指定 Kubernetes API服务器的地址和端口。

1. 初级基础命令

1)kubectl create

通过 yaml/json 文件或者标准输入创建一个资源对象

常用子命令及参数(按两次 tab 键即可查到):

clusterrolebinding         (为特定群集角色创建群集角色绑定)
clusterrole                 (创建群集角色)
configmap                 (从本地文件、目录或文字值创建配置映射)
cronjob                     (使用指定的名称创建cron作业)
deployment                 (使用指定的名称创建资源)
job                         (创建具有指定名称的作业)
namespace                 (用指定的名称创建一个命名空间)
priorityclass                 (使用指定的名称创建优先级类)
rolebinding                 (为特定角色或群集角色创建角色绑定)
role                         (使用单一规则创建角色)
secret                     (使用指定的子命令创建机密)
serviceaccount             (创建一个指定名称的服务账户)
service                     (使用指定的子命令创建服务)
token                     (请求服务帐户令牌)
-f                         (指定某个 yaml 或 json 文件来创建资源)

2)kubectl expose

将 json/yaml 文件中定义的资源对象的端口暴露给新的service 资源对象

常用子命令及参数:

deployment                 (管理Pod和ReplicaSet的声明式更新的一种资源对象) 
replicaset                 (副本控制器。控制由其管理的Pod,使Pod副本的数量始终维持在预设的个数)
service                     (暴漏服务的端口)
pod                     (暴露 Pod 容器组的端口)
replicationcontroller         (检查 Pod 健康状态的控制器)

3)kubectl run

创建并允许一个或多个容器镜像

常用子命令及参数:

--image (指定某个镜像)

4)kubectl set

配置资源对象设置特定功能

常用子命令及参数:

env                 (更新 Pod 模板上的环境变量)
image             (更新 Pod 模板上的镜像)
resources         (使用 Pod 模板更新对象的资源请求/限制)
selector             (为资源设置选择器)
serviceaccount     (更新资源的服务帐户)
subject             (更新角色绑定或群集角色绑定中的用户、组或服务帐户)

2. 中级基础命令

1)kubectl explain

查看资源对象的详细信息,一般用于编写 yaml 的时候做一个提示。

比如:kubectl explain deployment 会出现deployment下面可以写的字段,以及字段属性并且可以逐级使用。

2)kubectl get

获取一个或多个资源对象的信息,如:pod 的运行状态、容器数量、命名空间等。

常用子命令及参数:

-n, --namespace             (指定要查询的命名空间。如果不指定,默认查询当前命名空间中的资源)
-o, --output                 (指定输出格式。可以指定yaml、json、wide等格式。例如,使用-o yaml可以以                        yaml格式查看pod的信息,也可以指定已有资源加-o wide查询状态信息)
-w, --watch                 (实时观察资源的变化)
--all-namespaces,-A         (获取所有命名空间中的资源信息)
-l, --selector                 (根据标签选择器过滤资源。可以使用等于、不等于、包含、不包含等操作符来定义选择器条件)
--field-selector             (根据字段选择器过滤资源)
--sort-by                 (按照指定的字段对结果进行排序)
--show-kind                 (显示资源的种类信息)
--watch-only                 (只观察资源的变化,不输出当前资源信息)
pod                     (查询当前的 pod 资源,不加其他参数表示查询默认命名空间下的 pod)
nodes                     (查询当前 k8s 集群的所有节点及状态)

3)kubectl edit

使用默认编辑器编辑服务器上定义的资源对象,保存后自动应用更改到 kubernetes 集群配置中。

常用子命令及参数:

-f, --filename             (指定要编辑的资源对象的文件或URL)
-patch                 (将文件中的更改作为补丁应用于资源对象)
-p, --patch-strategy     (指定补丁策略。可以指定merge、retainKeys或strategic-merge)
--output-patch         (输出补丁文件)
--local                 (在本地进行编辑,而不是在集群中进行编辑)
--edit-cache             (编辑缓存中的资源对象)

4)kubectl delete

通过 json/yaml 文件、标准输入、资源名称或标签选择器来删除资源

常用子命令及参数:

-f, --filename             (指定要删除的资源对象的文件或URL)
--force                 (强制删除资源,即使资源正在运行)
--cascade             (删除与资源相关联的所有子资源)
--all                 (删除所有资源。慎用!!)
--grace-period         (设置宽限期)
-n                     (指定命名空间)

3. 部署命令

1)kubectl rollout

资源管理对象的部署

常用子命令及参数:

history                 (显示上线历史) 
resume                 (恢复暂停的资源)
pause                 (将所指定的资源标记为已暂停) 
status                 (显示上线的状态)
restart                 (重启一个资源) 
undo                (撤销上一次的上线)

2)kubectl rollout-update

使用 rc(replication controller)来做滚动更新资源,包括 Deployment、StatefulSet、Job 等。

3)kubectl scale

对资源扩容或着缩容,包括 deployment、replicaset、replication、controller 等。

常用子命令及参数:

deployment                 (扩展或缩减 Deployment 控制的Pod 数量)
replicaset                 (扩展或缩减 Replicaset 控制的Pod 数量)
--replicas                 (控制 Pod 数量)
replicationcontroller         (控制 Pod 数量需要达到相对值的参数)
statefulset                 (部署和扩展有状态的应用程序)

4. 集群管理命令

1)kubectl cetificate

修改证书资源对象

常用子命令及参数:

approve                     (批准证书签名请求(CSR))
reject                     (拒绝 CSR)
get                         (获取集群中存在的证书及其相关信息)
describe                     (查看集群中证书的详细信息,包括颁发者、有效期、主题、公钥等)
sertificates                 (获取一个证书的私钥)

2)kubectl cluster-info 

查看集群的概要信息

常用子命令及参数:

dump                     (获取集群详细信息,并可通过 grep 等过滤命令对集群进行问题诊断、调试测试等)

3)kubectl top

显示资源、CPU、内存、储存的使用情况

常用子命令及参数:

node                     (显示集群的资源使用情况)
pod                     (显示 pod 的资源使用情况,不加其他参数显示的是默认 pod)

4)kubectl cordon

标记集群内的某个节点为不可调度负载节点

常用子命令及参数:

节点名 (如:master、node01 等)

5)kubectl uncordon

指定某个节点为可调度节点

常用子命令及参数:

节点名 (如:master、node01 等)

6)kubectl drain

将某个节点上的工作负载平滑地切换到其他节点

常用子命令及参数:

节点名 (如:master、node01 等)

7)kubectl taint

将一个或多个节点设置为污点,具有污点的节点和 Pod之间存在一种互斥关系,这可以让节点拒绝 Pod 的调度
执行,甚至将已经存在的 Pod 驱逐出去。

常用子命令及参数:

node+节点名+节点名....

5. 故障排查和调试命令

1)kubectl describe

显示一个或多个资源对象的详细信息

常用子命令及参数:

nodes                     (显示某个节点的详细信息)
pod                     (显示某个 pod 的详细信息)
-f .yaml/json                 (显示某个 yaml/json 文件定义的资源的详细信息)
-l                         (指定显示的资源对象)
--include-uninitialized         (显示未初始化的资源对象)

2)kubectl logs

输出 pod 资源对象中一个容器的日志

常用子命令及参数: 

replicasets                 (显示 pod 数量控制器的日志) 
services                     (显示 services 日志)
deployments                 (显示 deployments 资源的日志)
pods                     (显示 pod 的日志)

3)kubectl attach

连接到一个运行的容器

常用子命令及参数:

-c                         (指定要进入的某个容器)
-i                         (将控制台输入发送到容器)
-t                         (为容器分配一个伪终端)

4)kubectl exec

在指定容器内执行命令,也可连接到某个容器

常用子命令及参数:

-c                         (指定要进入的某个容器)
-i                         (将控制台输入发送到容器)
-t                         (为容器分配一个伪终端)
-f                         (通过已定义好的 yaml/json 文件对容器进行交互)

5)kubectl port-forward

将本机指定端口映射到 pod 资源对象的端口

常用子命令及参数:

Pod                 (要转发端口的 Pod 名称或选择器,例如:nginx 8080:80,这里 nginx 为 Pod 名)

6)kubectl proxy

将本地指定端口映射到 API Server

常用子命令及参数:

-port=PORT                 (代理服务的端口号。默认为 8001)
-www=static-dir             (将静态文件目录提供给代理服务)
-www-prefix=prefix         (将 static-dir 中的文件路径前缀添加到代理服务中)
-api-prefix=prefix             (将 API 路径前缀添加到代理服务中)

7)kubectl cp

用于 pod 与主机交换文件

常用子命令及参数:

-c                         (指定容器名进行文件交互)

8)kubectl auth

检查操作是否被允许,例如检查是否可以在当前名称空间中列出部署、执行所有操作等。

常用子命令及参数:

can-i                 (检查是否允许操作)
reconcile             (协调RBAC角色、角色绑定、集群角色和集群角色绑定对象的规则…)
whoami                 (显示当前认证用户)

6. 高级命令

1)kubectl diff

对比本地 json/yaml 文件与 kube-apiserver 中运行的配置文件是否有差异

常用子命令及参数:

-f                 (指定要比较的资源对象的文件名或路径)
-o                 (指定输出格式,例如“yaml”或“json”)

2)kubectl apply 

通过 json/yaml 文件、标准输入对资源进行配置更新或创建

常用子命令及参数:

-f                 (指定要应用的资源对象的文件名或路径,可以是YAML、JSON或多个文件)
-n                 (指定要应用的资源对象的命名空间)
--recursive         (递归地应用目录中的所有资源对象)
--prune             (删除不再存在的资源对象)
--force             (强制应用资源对象,即使它们已存在)

3)kubectl patch

通过 patch 方式修改资源对象字段(补丁式)

常用子命令及参数:

-f                 (指定要修改的资源对象的文件名或路径)
-p                 (指定要应用的补丁,可以是JSON或YAML格式)
--type             (指定资源对象的类型,例如“Pod”、“Deployment”等)
-n                 (指定要修改的资源对象的命名空间)

4)kubectl replace

通过 json/yaml 文件或标准输入来替换资源对象

常用子命令及参数:

-f                 (指定要替换的资源对象的文件名或路径)
--force             (强制应用资源对象,即使它们已存在)

5)kubectl wait

在一个或多个资源上等待条件达成

常用子命令及参数:

-f                     (指定要等待的资源对象的文件名或路径)
--for=条件             (指定要等待的条件,例如“Ready=True”)
--timeout=时间         (设置等待的超时时间)

6)kubectl convert

转换 json/yaml 文件为不同的资源版本

常用子命令及参数:
-f             (指定 yaml/json 文件)
--v1         (将资源对象转换为 v1 版本)
--v1beta1     (将资源对象转换为 v1 版本测试版 1)

7)kubectl kustomize 

定制 kubernetes 配置

常用子命令及参数:

-f             (指定要应用的Kustomize配置文件的文件名或路径)
-n             (指定要应用的资源对象的命名空间)

7. 设置命令

1)kubectl label 

增删改资源的标签

常用子命令及参数:

-f                     (指定要修改标签的资源对象的文件名或路径)
标签名=新标签名         (添加一个标签到资源对象上)
--overwrite             (如果资源对象已经存在标签,则覆盖该标签)
标签名-                 (删除一个标签)

2)kubectl annotate

更新⼀个或者多个资源对象的注释(annotaion)信息

常用子命令及参数:

-f                                 (指定 yaml/json 文件)
--overwrite                         (如果资源对象已经存在注释,则覆盖已有注释)
KEY_1=VAL_1 ... KEY_N=VAL_N         (指定要添加或更新的注释键值对)

3)kubectl completion

开启 kubernetes 命令自动补齐功能。

8. 其他命令

kubectl config             管理 kubeconfig 配置文件
kubectl plugin             运行命令行插件功能
kubectl version             查看客户端服务端的系统版本信息
kubectl api-versions         列出当前 kubernetes 系统支持的资源组和资源版本表现形式为/
kubectl api-resources         列出当前 kubernetes 系统支持的resource资源列表
kubectloptions             查看支持的参数列表

三、kubernetes 常用命令

1. 编写 yaml 文件

[root@k8s-master ~]# mkdir pods
[root@k8s-master ~]# cd pods/
[root@k8s-master pods]# vim abc.yaml 

apiVersion: v1
kind: Pod
metadata:
        name: busybox-sleep
spec:
        containers:
        - name: busybox
          image: busybox:1.28
          args:
          - sleep
          - "1000"


2. kubectl create

通过配置文件名或标准输入创建一个集群资源对象,支持 json 和 yaml 格式的文件

语法:kubectl create -f 文件名
[root@k8s-master pods]# kubectl create -f abc.yaml 
pod/busybox-sleep created                         //代表创建成功
[root@k8s-master pods]# kubectl get po -A|grep bus               //查看

[root@k8s-master pods]# vim abc.json 
{
    "apiVersion":"v1",
    "kind":"Pod",
    "metadata":{
        "name":"busybox-sleep000"
    },
    "spec":{
        "containers":[
            {
                "name":"busybox000",
                "image":"busybox:1.28",
                "args":[
                    "sleep",
                    "1000"
                ]
            }
        ]
    }
}
[root@k8s-master pods]# kubectl create -f abc.json
[root@k8s-master pods]# kubectl get po -A|grep bus               //查看
然后把前面创建的pod删除
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值