kubectl命令
1.管理集群
1.1 kubectl命令
kubectl是控制k8s集群的命令行工具
kubectl [command] [type] [name] [flags] 語法格式
- command 子命令: create,get,describe,delete
- type: 資源類型,可以表示為單數,復數或縮寫形式
- name: 資源的名稱,如果省略,則顯示所有資源的詳細信息
- flags: 指定可選標志,或附加的參數
1.2 kubectl基本命令
# 查看幫助
kubectl help
# 客戶端版本信息
kubectl version
# 查看集群狀態信息
kubectl cluster-info
# 查看資源對象類型
kubectl api-resources
# 查看節點
kubectl get node -o wide
# 查看容器資源
kubectl get pod -o wide
# 查看資源名稱
kubectl get deployment
# 創建pod容器
kubectl run myweb --image=harbor:443/library/image:httpd
# 創建交互時pod容器
kubectl run mypod -it --image=harbor:443/library/image:yum
# 查看命名空間
kubectl get namespace
# 查看指定命名空間的pod
kubectl -n kube-system get pod
# 查看詳細信息
kubectl describe pod myweb
# 查看pod日志信息
kubectl logs myweb
1.3 kubectl節點命令
# 查看node的標簽
kubectl get nodes node1 --show-labels
# 打標簽
kubectl label node1 disk=ssd
# 刪除標簽
kubectl label nodes node1 disk-
# 動態直接給容器擴容
kubectl scale deployment my-deploy --replicas=3
2.管理pod
2.1 pod與控制器
控制器:控制器是k8s內置的管理工具,可以幫助用戶實現Pod的自動部署,自維護,擴容,滾動更新等功能的自動化程序
# 創建一個帶控制器的pod資源
kubectl create deployment myapache --images=harbor:443/library/image:httpd
# 鏈接控制器 --:是shell指令的擴展終止符,后面的內容被認為是指令
kubectl exec -it myapache-67bdb5889-wzfzw -- /bin/bash
# 查看頂層控制器,deployments可以為集群提供升級和滾動
kubectl get deployments.apps
# 查看二級控制器,replicasets管理pod,給定參數會自動擴容節點,檢測pod狀態,發現pod壞掉會重新生成
kubectl get replicasets.apps
# 查看底層pod
kubectl get pod
# 刪除要從頂層資源刪起
kubectl delete deployments.app myapache
kubectl delete pod myweb
2.2 DaemonSet控制器
DaemonSet:每個機器都要啟動運行的pod,確保全部或一些Node上運行pod副本
刪除DaemonSet,會刪除所有它創建的pod副本,典型應用:ceph節點、監控節點、filebeat日志收集等
系統服務kube-proxy就是這種類型
2.3 Job控制器
Job控制器可以理解為定時任務,單任務控制器
CronJob重復多次任務控制器
# cronjob.yaml
---
apiVersion: batch/v1 #版本
kind: CronJob #資源類型
metadata:
name: cronjob-pi #資源對象名稱
spec:
schedule: "*/1 * * * *" #定義周期時間,分時日月周
jobTemplate: #引用job模板
spec:
template:
spec:
containers:
- name: pi
image: harbor:443/library/image:yum
command: ["/bin/bash"]
args:
- -c
- |
echo "Hello World."
restartPolicy: OnFailure
2.4 污點標簽
PreferNoSchedule盡量不調度、 NoSchedule不會被調度、NoExecute驅逐污點
驅逐污點使用:node1機器出現故障,可以使用驅逐污點,讓node1的容器遷移到其它節點上,清除污點,已調度走的容器不會再回來了
# 查看所有污點標簽
kubectl describe nodes | grep Taints
# 設置污點
kubectl taint node node1 k1=v1:NoSchedule
# 刪除污點
kubectl taint node node1 k1-
3.yaml資源對象文件
3.1 資源對象文件定義
資源對象文件:描述和定義kubernetes資源的文件,包含資源的配置信息,可以創建、刪除、管理資源對象
# 定義一個簡單的資源對象文件 pod.yaml
---
apiVersion: v1 #版本
kind: Pod #資源類型
metadata: #元數據
name: my-pod #資源的名字
spec: #具體的資源詳細信息
containers: #容器配置
- name: my-pod #容器名字
image: harbor:443/library/image:httpd #鏡像地址
ports: #定義服務端口
- protocol: TCP #使用的協議
containerPort: 80 #容器端口
# 啟動資源
kubectl apply -f pod.yaml
# 查看
kubectl get pod
# 關閉資源
kubectl delete -f pod.yaml
# 查詢一個資源對象文件(如果不會寫,可以找到一個已經存在的資源,查看)
kubectl get deployment.apps my-deploy -o yaml
kubectl get deployment.apps my-deploy -o wide
kubectl get deployment.apps my-deploy -o json
# 獲取資源對象文件模板
# pod模板案例
kubectl run pod --image=harbor:443/library/image:yum --dry-run=client -o yaml
# deployment模板案例
kubectl create deployment test-deploy --image=harbor:443/library/image:yum --dry-run=client -o yaml
4.ConfigMap映射
# 創建configMap
kubectl create configmap nginx-conf --from-file=nginx.conf
# 查看configMap
kubectl get configmaps
# yaml文件內配置
configMap:
name: nginx-conf #ConfigMap名字

浙公網安備 33010602011771號