k8s筆記5--k8s常見命令
k8s筆記5--k8s常見命令
kubectl 具備豐富的命令,其使用方法如下:
kubectl [flags] [options]
通過 "kubectl --help"來查詢指定命令的更多資訊;
通過 “kubectl options” 來查詢所用命令列選項 (適用於所有命令).
此處根據 kubectl --help 將各類命令加以分類,後續將按照分類補充各命令的使用案例。
1 Basic Commands (Beginner)
- create
Create a resource from a file or from stdin.1) 通過dry-run 的方式建立一個deployment 基本資訊 kubectl create deployment my-web --image=nginx --dry-run=client -o yaml >my-web.yaml 通過 apply -f 建立實際的deployment kubectl apply -f my-web.yaml
- expose
使用 replication controller, service, deployment 或者 pod 並暴露它作為一個新的 Kubernetes Service
此時通過nodeIP:NodePort可以正常訪問my-web 中的5000埠:$ kubectl expose deployment my-web --port=5000 --target-port=5000 --type=NodePort $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-web NodePort 10.1.175.63 <none> 5000:32020/TCP 4m5s
- run
在叢集中執行一個指定的映象在當前名稱空間中建立一個pod,容器埠為80 kubectl run nginx2 --image=nginx:latest --port=80 等價: apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx2 name: nginx2 spec: containers: - image: nginx:latest name: nginx2 ports: - containerPort: 80 resources: {} dnsPolicy: ClusterFirst restartPolicy: Always status: {}
- set
為 objects 設定一個指定的特徵1) 設定 my-web 中的容器nginx的映象為nginx:latest kubectl set image deployment/my-web nginx=nginx:latest 2) 設定 my-web 中的環境變數 env_dir為/local kubectl set env deployment/my-web env_dir=/local 3) 檢視所有pod的環境變數 kubectl set env pods --all --list
2 Basic Commands (Intermediate)
- explain
檢視資源的文件1)檢視pod 的所有子欄位的文件 kubectl explain pods 2)檢視pod的spec.containers 的所有子欄位文件 kubectl explain pods.spec.containers
- get
顯示一個或更多 resources1) 獲取 pod 資訊 $ kubectl get pods -n=test-online 等價 kubectl get pods --namespace=test-online NAME READY STATUS RESTARTS AGE web-96d5df5c8-4q4vx 1/1 Running 0 62m $ kubectl get pods --namespace=test-online -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES web-96d5df5c8-4q4vx 1/1 Running 0 63m 10.244.1.15 test02.i.xxx.net <none> <none> jsonpath 可以檢視pod資訊指定key的資料,若直接為"{}", 則返回一個未格式化的大json字串 $ kubectl get pod web-96d5df5c8-4q4vx -o jsonpath="{.metadata.labels}" {"app":"web","pod-template-hash":"96d5df5c8"} 2) 檢視 configmap 資訊 $ kubectl get configmap -n=kube-public NAME DATA AGE cluster-info 1 3d23h
- edit
在伺服器上編輯一個資源1) 編輯 deployment my-web kubectl edit deployment/my-web 2) 編輯 pod nginx2 kubectl edit pod nginx2 [-o json 以json格式編輯]
- delete
Delete resources by filenames, stdin, resources and names, or by resources and label selector1) 刪除pod nginx2 kubectl delete pod nginx2
3 Deploy Commands
- rollout
Manage the rollout of a resource
1) 回滾到前一個版本
kubectl rollout undo deployment/my-web
2)檢視回滾歷史記錄
kubectl rollout history deployment/my-web
- scale
Set a new size for a Deployment, ReplicaSet or Replication Controllerkubectl scale --replicas=2 deployment/my-web
- autoscale
自動調整一個 Deployment, ReplicaSet, 或者 ReplicationController 的副本數量kubectl autoscale deployment my-web --min=2 --max=3 此時可以通過hpa 檢視pod數量,若再次scale為1,則過一會兒會自動伸縮為2 $ kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-web Deployment/my-web <unknown>/80% 2 3 2 111s 若想取消自動伸縮,則直接delete hpa 即可 : kubectl delete hpa my-web
4 Cluster Management Commands
- certificate
修改 certificate 資源. - cluster-info
顯示叢集資訊1) 檢視叢集基礎資訊,包括master 和kubedns $ kubectl cluster-info Kubernetes master is running at https://10.120.75.102:6443 KubeDNS is running at https://10.120.75.102:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy 2) 診斷叢集 kubectl cluster-info dump 輸出很多叢集診斷資訊
- top
Display Resource (CPU/Memory/Storage) usage.kubectl top node [node-name 檢視指定node的cpu mem資訊] # (不指定node-name)顯示所有節點cpu 記憶體使用情況 kubectl top pod -A # 顯示所有pod 的cpu 和 記憶體使用情況
- cordon
標記 node 為 unschedulablekubectl cordon node-name 標記不可排程後,get nodes 發現 status 變為 Ready,SchedulingDisabled
- uncordon
標記 node 為 schedulablekubectl uncordon node-name
- drain
Drain node in preparation for maintenance該操作為驅逐或者刪除node上的pod,常見常見為磁碟爆了會出現pod被驅逐現象 $ kubectl drain node-name
- taint
更新一個或者多個 node 上的 taints
5 Troubleshooting and Debugging Commands
- describe
顯示一個指定 resource 或者 group 的 resources 詳情 - logs
輸出容器在 pod 中的日誌 - attach
Attach 到一個執行中的 container - exec
在一個 container 中執行一個命令;
當前同時支援 pod cmd 和 pod -- cmd模式,後續會拋棄pod cmd 模式;$ kubectl exec web-96d5df5c8-4q4vx -- hostname web-96d5df5c8-4q4vx
- port-forward
Forward one or more local ports to a pod - proxy
執行一個 proxy 到 Kubernetes API server - cp
複製 files 和 directories 到 containers 和從容器中複製 files 和 directories. - auth
Inspect authorization
6 Advanced Commands
- diff
Diff live version against would-be applied version - apply
通過檔名或標準輸入流(stdin)對資源進行配置 - patch
使用 strategic merge patch 更新一個資源的 field(s) - replace
通過 filename 或者 stdin替換一個資源 - wait
Experimental: Wait for a specific condition on one or many
resources. - convert
在不同的 API versions 轉換配置檔案 - kustomize
Build a kustomization target from a directory or a remote url.
7 Settings Commands
- label
更新在這個資源上的 labels - annotate
更新一個資源的註解 - completion
Output shell completion code for the specified shell (bash or zsh)
8 Other Commands
- alpha
Commands for features in alpha - api-resources
Print the supported API resources on the server - api-versions
Print the supported API versions on the server, in the form of “group/version” - config
修改 kubeconfig 檔案修改預設 ns 為test-online(k8s 預設的為default ns) kubectl config set-context $(kubectl config current-context) --namespace=test-online
- plugin
Provides utilities for interacting with plugins. - version
輸出 client 和 server 的版本資訊
10 說明
相關文章
- GIT非常見命令使用筆記Git筆記
- iOS面試筆記常見概念(一)iOS面試筆記
- 常見dos命令
- 常見命令-history
- 常見命令--SCP
- nginx常見命令Nginx
- Docker常見命令Docker
- 筆記本常見故障與排除方法筆記
- linux 常見命令及說明雜記Linux
- AOSP常見的命令
- 常見的DOS命令
- linux常見命令Linux
- 1.6常見CMD命令
- 常見Linux命令Linux
- Javascript常見排序演算法的筆記JavaScript排序演算法筆記
- Linux常見命令(系統命令)Linux
- #印象筆記#筆記丟失,誤刪除常見問題彙總筆記
- 小程式讀書筆記(1)常見問題筆記
- GoldenGate學習筆記(9)_常見問題Go筆記
- Git SSH 命令常見用法Git
- 常見的linux命令Linux
- nslookup命令的常見用法
- Shell常見命令實踐
- linux vnc常見命令LinuxVNC
- HP-UX常見命令UX
- 【3】Linux常見命令Linux
- 常見d部分dos命令
- adb常見操作命令
- numpy學習筆記 – numpy陣列的常見用法筆記陣列
- Linux 下 常見操作命令Linux
- useradd 命令的常見用法
- 日誌分析(1)常見命令
- linux常見命令說明Linux
- Linux 常見命令示例【一】Linux
- Docker常見命令---簡易教程Docker
- 常見檔案搜尋命令
- U-boot常見命令使用boot
- 曹政資訊保安課筆記-常見資訊保安的常識錯誤筆記