2019-08-31

## 1 kubectl命令介绍

### 1.1 基本命令

    Kubectl是kubernetes的命令行工具。职责是对集群中资源对象进行操作,这些操作包括对资源对象的增、删、改、查以及高级操作(滚动升级)等。下表中显示了kubectl支持的所有操作命令,以及这些命令的语法和描述信息。

    Kubernetes中所有组件都是资源,以下命令适用于所有组件。

| **操作** | **语法** | **描述** |

:----|:----|:----|

| **annotate** |  kubectl annotate (-f FILENAME \\\| TYPE NAME \\\| TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags] | 添加或更新一个或多个资源的注释

| **api-versions**| kubectl api-versions [flags] | 列出可用的API版本

|**apply**| kubectl apply -f FILENAME [flags]   | 将来自于文件或stdin的配置变更应用到主要对象中。

| **attach** | kubectl attach POD -c CONTAINER [-i] [-t][flags]  | 连接到正在运行的容器上,以查看输出流或与容器交互(stdin)。

| **autoscale** | kubectl autoscale (-f FILENAME \\\| TYPE NAME \\\| TYPE/NAME) [–min=MINPODS] –max=MAXPODS [–cpu-percent=CPU] [flags] |自动扩宿容由副本控制器管理的Pod。

|**cluster-info**| kubectl cluster-info [flags]  | 显示群集中的主节点和服务的的端点信息。

|**config**| kubectl config SUBCOMMAND [flags] | 修改kubeconfig文件。

|**create**| kubectl create -f FILENAME [flags] | 从文件或stdin中创建一个或多个资源对象。

|**delete**| kubectl delete (-f FILENAME \\\| TYPE [NAME \\\| /NAME \\\| -l label \\\| –all]) [flags] |删除资源对象。

|**describe**| kubectl describe (-f FILENAME \\\| TYPE [NAME_PREFIX \\\| /NAME \\\| -l label]) [flags]  | 显示一个或者多个资源对象的详细信息。

|**edit**| kubectl edit (-f FILENAME \\\| TYPE NAME \\\| TYPE/NAME) [flags]  | 通过默认编辑器编辑和更新服务器上的一个或多个资源对象。

|**exec**| kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [– COMMAND [args…]] | 在Pod的容器中执行一个命令。

|**explain**| kubectl explain [–include-extended-apis=true] [–recursive=false] [flags] | 获取Pod、Node和服务等资源对象的文档。

|**expose**| kubectl expose (-f FILENAME \\\| TYPE NAME \\\| TYPE/NAME) [–port=port] [–protocol=TCP\\\|UDP] [–target-port=number-or-name] [–name=name] [—-external-ip=external-ip-of-service] [–type=type] [flags] | 为副本控制器、服务或Pod等暴露一个新的服务。

|**get**| kubectl get (-f FILENAME \\\| TYPE [NAME \\\| /NAME \\\| -l label]) [–watch] [–sort-by=FIELD] [[-o \\\| –output]=OUTPUT_FORMAT] [flags]| 列出一个或多个资源。

|**label**| kubectl label (-f FILENAME \\\| TYPE NAME \\\| TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags]  | 添加或更新一个或者多个资源对象的标签。

|**logs**| kubectl logs POD [-c CONTAINER] [–follow] [flags]  | 显示Pod中一个容器的日志。

|**patch**| kubectl patch (-f FILENAME \\\| TYPE NAME \\\| TYPE/NAME) –patch PATCH [flags] | 使用策略合并补丁过程更新资源对象中的一个或多个字段。

|**port-forward**| kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT […[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]  | 将一个或多个本地端口转发到Pod。

|**proxy**|kubectl proxy [–port=PORT] [–www=static-dir] [–www-prefix=prefix] [–api-prefix=prefix] [flags]| 为kubernetes API服务器运行一个代理。

|**replace**| kubectl replace -f FILENAME | 从文件或stdin中替换资源对象。

|**rolling-update**| kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] –image=NEW_CONTAINER_IMAGE \\\| -f NEW_CONTROLLER_SPEC) [flags] | 通过逐步替换指定的副本控制器和Pod来执行滚动更新

| **run**| kubectl run NAME –image=image [–env=”key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [flags]  | 在集群上运行一个指定的镜像。

| **scale**| kubectl scale (-f FILENAME \\\| TYPE NAME \\\| TYPE/NAME) –replicas=COUNT [–resource-version=version] [–current-replicas=count] [flags]| 扩宿容副本集的数量。

| **version**|kubectl version [–client] [flags]|显示运行在客户端和服务器端的Kubernetes版本

## 1.2 资源对象

    kubernetes提供了很多资源对象,开发和运维人员可以通过这些对象对容器进行编排操作。在下表中,是kubectl所支持的资源对象类型,以及它们的缩略别名。

| **资源对象类型** | **缩略别名** |

|:----:|:----:|

|apiservices||

|certificatesigningrequests|csr|

|clusters||

|clusterrolebindings||

|clusterroles||

|componentstatuses|cs|

|configmaps|cm|

|controllerrevisions||

|cronjobs||

|customresourcedefinition|crd|

|daemonsets|ds|

|deployments|deploy|

|endpoints|ep|

|events|ev|

|horizontalpodautoscalers|hpa|

|ingresses|ing|

|jobs||

|limitranges|limits|

|namespaces|ns|

|networkpolicies|netpol|

|nodes|no|

|persistentvolumeclaims|pvc|

|persistentvolumes|pv|

|poddisruptionbudget|pdb|

|podpreset||

|pods|po|

|podsecuritypolicies|psp|

|podtemplates||

|replicasets|rs|

|replicationcontrollers|rc|

|resourcequotas|quota|

|rolebindings||

|roles||

|secrets||

|serviceaccounts|sa|

|services|svc|

|statefulsets||

|storageclasses||

### 1.3 输出选项

    kubectl默认执行完命令后的输出格式为纯文本格式,可以通过-o或者–output字段指定命令的输出格式。

kubectl [COMMAND] [TYPE] [NAME] -o=\<output_format\>

| **输出格式** | **描述**|

|:----|:----|

|\-o=custom-columns=\<spec\>|使用以逗号分隔的自定义列打印表格。|

|\-o=custom-columns-file=\<filename\>|使用文件中自定义列打印表格。|

|\-o=json|输出JSON格式的API对象|

|\-o=jsonpath=\<template\>|打印在jsonpath表达式中定义的字段|

|\-o=jsonpath-file=\<filename\>|打印文件中以jsonpath表达式定义的字段|

|\-o=name|仅仅输出资源对象的名称。|

|\-o=wide|输出带有附加信息的纯文本格式。对于Pod对象,将会包含Node名称。|

|\-o=yaml|输出YAML格式的API对象|

## 2.1 kubectl常用命令

### 2.1 集群相关

* 查看集群组件状态

  `kubectl get componentstatuses`

* 查看kubelet日志

  `journalctl -xeu kubelet`

  `journalctl -f -u kubelet`

* 获取集群信息

kubectl cluster-info

kubectl get cs-   **新建/删除namespace**

kubectl create namespace {namespace-name}

kubectl delete namespace {namespace-name}1.  Pod相关    1.  pod-   **查看pod列表**

\#指定命名空间的pod列表

kubectl get pods -n {namespace-name} -o wide

\#所有命名空间的pod列表

kubectl get pods --all-namespaces -o wide-   **查看pod日志**

kubectl logs {pod-name} -n {namespace-name}-   **查看pod详情**

kubectl describe pod {pod-name} -n {namespace-name}-   **将容器镜像运行在pod中**

kubectl run {pod-name} --image={repository:tag} --replicas=1 --port=900-   **在pod中运行命令**

kubectl exec {pod-name} {cmd-name}-   **进入pod**

kubectl exec {pod-name} -it bash-   **查看deploy列表**

kubectl get deployments -n {namespace-name} -o wide-   **删除单个pod**

kubectl delete pods {pod-name}### deployment-   **使用命令直接创建创建deployment**

kubectl run {deployment-name} --image={repository:tag} --replicas={replicas-num}-   **使用yaml创建deployment**

kubectl create -f {yaml-name}.yaml-   **删除deployment**

kubectl delete deployment {deployment-name}-   **查看所有deployment**

kubectl get deployment-   **查看deployment详细信息**

kubectl describe deployment {deployment-name}-   **查看replicaset**

kubectl get rs-   **查看replicaset详细信息**

kubectl describe rs {replicaset-name}-   **deployment扩容/缩容**

kubectl scale deployment nginx --replicas={replicas-num}-   **deployment升级/回滚**

kubectl set image deploy {deployment-name} {deployment-name}={repository:tag}-   **查看升级状态**

kubectl rollout status deployment {deployment-name}-   **查看升级历史**

kubectl rollout history deployment {deployment-name}-   **查看历史版本详情**

kubectl rollout history deployment {deployment-name} --revision=2### 2.2.3 service-   **使用yaml创建service**

kubectl create -f {yaml-name}.yaml-   **使用yarm删除service**

kubectl delete -f {yaml-name}.yaml-   **直接删除某个service**

kubectl delete svc nginx### 2.2.4 其它-   **编辑**

kubectl edit {resource-type}/{resource-name}

或者

kubectl edit –f {yaml-name}-   **查看endpoint**

kubectl get endpoints-   **在线查看Yaml语法**

kubectl explain pod

kubectl explain pod.spec \| grep -i "containers" -5-   **检验Yarm语法**

kubectl create -f flask.yaml --validate-   **使用Yaml文件删除pod**

kubectl delete -f flask.yaml

Docker相关

----------### 容器命令-   **查看容器进程**

docker ps\|grep {container-name}-   **查看容器日志**

docker logs --tail=500 {container-id}-   **进入容器内部**

docker exec -it {container} /bin/bash### 镜像命令-   **镜像列表**

docker images-   **导出镜像**

docker save -o {output-path} {repository:tag}

【说明】

output-path:导出到的本地目录-   **导入镜像**

docker load --input {image-tar}-   **修改cgroupdriver**

vi /etc/docker/daemon.json

\#添加如下内容

{

"exec-opts": ["native.cgroupdriver=systemd"]

}

其它参考

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容