前言
上次教程我們已經搭建好了kubernetes集群了,現在我們就實踐演練一下常用的kubectl命令吧。今天主要講解deployment,replicaset,daemonset。
kubectl 命令詳解 deployment
創建nginx.yml
nginx.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: web_server
spec:
containers:
- name: nginx
image: nginx:1.7.9
nodeSelector:
disktype: xfs
參數解釋:
apiVersion 當前配置格式的版本
kind 要創建的資源類型
metadata 該資源的元數據
spec 該deployment的規格說明
replicas 副本數的數量,默認為1
template 定義Pod模板
metadata 定義Pod的元數據
spec 該Pod的規格說明
nodeSelector 選擇節點
資源
創建deployment資源
kubectl apply -f nginx.yml
刪除deployment資源
kubectl delete -f nginx.yml
查看deployment資源(簡略)
這是用來查看名為 nginx-deployment 的 deployment 的狀態。說白了就是看nginx的部署狀態。
kubectl get deployment
參數解釋
DESIRED: 期望部署副本數
CURRENT: 當前部署副本數
UP-TO-DATE:最新部署副本數
AVAILBLE: 運行中的副本數
AGE: 已經運行的時間
查看deployment資源(較詳細)
獲取再詳細點的nginx的部署狀態
kubectl get deployment -o wide
參數解釋
CONTAINERS: 運行的容器
IMAGES: 容器的鏡像
SELECTOR: 調度規則
查看deployment資源(非常詳細)
獲取非常詳細的nginx的部署狀態
kubectl describe deployment nginx-deployment
參數解釋
Name deployment 名
Namespace 命名空間
CreationTimestamp 創建時間
Labels 標籤
Annotations 註釋
Selector 調度規則
Replicas 副本
StrategyType 策略類型
MinReadySeconds 最小準備時間
RollingUpdateStrategy 滾動更新策略
Pod Template pod模板
Conditions 條件
OldReplicaSets 舊的副本數
NewReplicaSets 新的副本數
Events: Deployment的執行日誌
kubectl 命令詳解 - replicaset
實際上Deployment是通過replicaset來管理pod的
資源
查看replicaset資源(簡略)
查看副本數
kubectl get replicaset
參數解釋
NAME 副本名
DESIRED 期望部署副本數
CURRENT 當前部署副本數
READY 準備好的副本數
AGE 已經運行的時間
查看replicaset資源(較詳細)
kubectl get replicaset
參數解釋
CONTAINERS 運行的容器
IMAGES: 容器的鏡像
SELECTOR 調度規則
查看replicaset資源(非常詳細)
kubectl describe replicaset nginx-deployment-57f56449d9
參數解釋
Name deployment 名
Namespace 命名空間
Selector 調度規則
Labels 標籤
Annotations 註釋
Controller By 指明是由deployment創建
Replicas 副本
Pods Status Pod狀態
Pod Template Pod模板
Events: Deployment的執行日誌
kubectl 命令詳解 - DaemonSet
DaemonSet 和 Deployment 的區別:
DaemonSet 每個node最多隻允許一個副本
Deployment 每個node可運行多個副本
DaemonSet 應用場景
- 集群的每個節點運行存儲 Daemon 。 例如:ceph
- 集群的每個節點運行日誌收集 Daemon 。 例如: logstash
- 集群的每個節點運行監控 Daemon 。例如: collectd
資源
由於DaemonSet的特性,k8s的kube-proxy就是這類資源。由於kube-proxy資源是屬於kube-system命名空間的,所以我們要指明 -n kube-system(或者 --namespace=kube-system)
查看daemonset 資源(簡略)
kubectl -n kube-system get daemonset
查看daemonset 資源(較詳細)
kubectl -n kube-system get daemonset -o wide
查看daemonset 資源(非常詳細)
kubectl -n kube-system describe daemonset
查看 kube-proxy 的yaml文件
kubectl -n kube-system edit daemonset kube-proxy
閱讀更多 崔格拉斯 的文章