使用kubectl管理k8s集羣(二十九)

前言

在搭建k8s集羣以前,咱們須要先了解下kubectl的使用,以便在集羣部署出現問題時進行檢查和處理。命令和語法記不住沒有關係,可是請記住主要的語法和命令以及幫助命令的使用。html

在下一篇,咱們將講述使用Kubeadm來建立k8s集羣。nginx


 

目錄

使用kubectl管理k8s集羣

  • 概述
  • 語法
  • 主要命令(command)說明
  • 資源類型(TYPE)說明
  • 命令標準(flags)說明
  • 格式化輸出

 

 使用kubectl管理k8s集羣

 

概述

Kubectl是一個命令行界面,用於運行鍼對Kubernetes集羣的命令。Kubectl的配置文件在$HOME/.kube目錄。咱們能夠經過設置KUBECONFIG環境變量或設置命令參數--kubeconfig來指定其餘位置的kubeconfig文件。數據庫

 

語法

咱們可使用如下語法kubectl從終端窗口運行命令:json

kubectl [command] [TYPE] [NAME] [flags]api

其中command,TYPE,NAME,和flags分別是:服務器

  • command:指定要在一個或多個資源進行的操做,例如create,get,describe,delete。例如「kubectl get cs」。
  • TYPE:指定資源類型。資源類型不區分大小寫,能夠指定單數,複數或縮寫形式。例如,如下命令產生相同的輸出:

  kubectl get pod pod1架構

  kubectl get pods pod1app

  kubectl get po pod1ide

  • NAME:指定資源的名稱。名稱區分大小寫。若是省略名稱,則顯示全部資源的詳細信息,如「kubectl get pods」。

在對多個資源執行操做時,咱們能夠按類型和名稱指定每一個資源,或指定一個或多個文件:post

1)         要按類型和名稱指定資源:

    • 若是資源類型相同,則對資源進行分組:TYPE1 name1 name2 name<#>。
      例:kubectl get pod example-pod1 example-pod2
    • 分別指定多種資源類型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>。
      例:kubectl get pod/example-pod1 replicationcontroller/example-rc1

2)     要使用一個或多個文件指定資源: -f file1 -f file2 -f file<#>

    • 注意使用YAML而不是JSON,由於YAML每每更加用戶友好,特別是對於配置文件。
      例:kubectl get pod -f ./pod.yaml
  • flags:指定的可選標誌,不過值得注意的是,使用命令行指定參數會覆蓋默認值以及相關的環境變量。例如,咱們可使用-s或--server標誌來指定Kubernetes API服務器的地址和端口。

 

主要命令(command)說明

Kubectl的主體操做命令以下表所示:

操做

描述

annotate

添加或更新一個或多個資源的註釋。

api-versions

列出可用的API版本。

apply

經過文件名或標準輸入流(stdin)對資源進行配置,例如「kubectl apply --prune -f manifest.yaml -l app=nginx」

attach

附加到一個正在運行的容器,以查看輸出流或與容器(stdin)交互。

autoscale

自動縮放由Replication Controller管理的pod集。

cluster-info

顯示有關羣集中主服務器和服務的端點信息。

config

指定kubeconfig文件。

create

從文件或標準輸入流(stdin)建立一個或多個資源。例如使用pod.json建立pod「kubectl create -f ./pod.json」。

delete

經過文件,標準輸入、指定標籤選擇器,名稱,資源選擇器或資源來刪除資源。例如刪除全部的pod「kubectl delete pods --all」。

describe

顯示一個或多個資源的詳細。例如查看pod「coredns-5c98db65d4-h5v9h」的詳情「kubectl describe pod coredns-5c98db65d4-h5v9h -n kube-system」,這裏使用了「-n」指定了命名空間。

edit

在服務器上編輯一個資源。

exec

在Pod容器中執行命令。

explain

查看資源的文檔。例如pod,節點,服務等。例如「kubectl explain pods」。

expose

將複製控制器,服務或pod公開爲新的Kubernetes服務。

get

列出一個或多個資源。例如「kubectl get pods -n kube-system -o wide」命令將列出「kube-system」命名空間下的全部pod而且以表格狀輸出pod的相關附加信息(節點名稱)。

label

添加或更新一個或多個資源的標籤。

logs

輸出容器在pod中的日誌。例如執行如下命令「kubectl logs etcd-k8s-master -n kube-system」將在終端中輸出該容器的日誌。

patch

使用patch策略更新資源的字段。

port-forward

將一個或多個本地端口轉發到pod。

proxy

運行代理指定到Kubernetes API server。

replace

從文件或標準輸入中替換資源。

rolling-update

經過逐步替換指定的Replication Controller及其pod來執行滾動更新。

run

在羣集上運行指定的映像。例如運行Nginx「kubectl run nginx --image=nginx」。

scale

設置新的Deployment, ReplicaSet, Replication Controller 或者 Job副本數量。例如「ubectl scale --replicas=3 -f foo.yaml」。

version

顯示客戶端和服務器上運行的Kubernetes版本。

api-resources

輸出服務端支持的全部的API資源類型。

api-versions

輸出服務端支持的API版本。

更多命令,咱們能夠執行「kubectl help」來查看當前全部支持的命令,也能夠訪問官方地址「https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands」來查看全部的命令說明。在使用的過程當中,若是咱們不瞭解單個命令的具體語法,咱們可使用「kubectl <command> --help」來獲取詳細介紹,如:

kubectl scale --help

 

資源類型(TYPE)說明

咱們可使用「kubectl api-resources」命令來獲取服務端目前支持的全部的資源類型,以下圖所示:

 

命令標準(flags)說明

一樣的,咱們可使用命令「kubectl options」來輸出當前支持的全部可選標誌:

 其中,在前面咱們說過,「-s」能夠指定Kubernetes API 服務器地址,「-n」能夠指定命名空間,「--kubeconfig」能夠指定kubeconfig配置文件。主要的一些說明以下所示:

 

格式化輸出

默認狀況下,全部的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,包括節點名稱。

-o=yaml

輸出YAML格式的API對象。

例如:

kubectl get pods -n kube-system -o wide

 

 

往期內容連接

Docker最全教程——從理論到實戰(一)

Docker最全教程——從理論到實戰(二)

Docker最全教程——從理論到實戰(三)

Docker最全教程——從理論到實戰(四)

Docker最全教程——從理論到實戰(五)

Docker最全教程——從理論到實戰(六)

Docker最全教程——從理論到實戰(七)

Docker最全教程——從理論到實戰(八)

相關文章
相關標籤/搜索