1、運行Deployment
kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2 #部署包含兩個deployment nginx-deployment 容器的images為nginx:1.7.9
kubectl get deployment nginx-deployment #查看nginx-deployment的狀態
kubectl describe deployment nginx-deployment # 查看詳細的nginx-deployment狀態
kubectl get replicaset #查看replicaset

kubectl describe replicaset nginx-deployment-6fb585c4cc #查看nginx-deployment-6fb585c4cc詳細信息

Controlled By 指明此ReplicaSet是由Deploymnet nginx-deployment創建的。
kubectl get pod #查看pod

kubectl describe pod nginx-deployment-6fb585c4cc-m4tp8 #查看nginx-deployment-6fb585c4cc-m4tp8詳細情況

Controlled By 指明此 Pod 是由 nginx-deployment-6fb585c4cc 創建。Events 記錄了 Pod 的啟動過程。
總結一下這個過程:用戶通過 kubectl 創建 Deployment。Deployment 創建 ReplicaSet。ReplicaSet 創建 Pod。

對象的命名方式是:子對象的名字 = 父對象名字 + 隨機字符串或數字
2、命令VS配置文件
Kubernetes 支持兩種方式創建資源:
1.用 kubectl 命令直接創建,比如:kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2在命令行中通過參數指定資源的屬性。
2.通過配置文件和 kubectl apply 創建,要完成前面同樣的工作,可執行命令:kubectl apply -f nginx.ymlnginx.yml 的內容為:

3、Deployment配置文件簡介

① apiVersion 是當前配置格式的版本。
② kind 是要創建的資源類型,這里是 Deployment。
③ metadata 是該資源的元數據,name 是必需的元數據項。
④ spec 部分是該 Deployment 的規格說明。
⑤ replicas 指明副本數量,默認為 1。
⑥ template 定義 Pod 的模板,這是配置文件的重要部分。
⑦ metadata 定義 Pod 的元數據,至少要定義一個 label。label 的 key 和 value 可以任意指定。
⑧ spec 描述 Pod 的規格,此部分定義 Pod 中每一個容器的屬性,name 和 image 是必需的。
kubectl delete deployment nginx-deployment 或者 kubectl delete -f nginx.yml #刪除nginx應用
4、伸縮
直接修改nginx.yml 將relicas 修改成 對應的數字,然后執行kubectl apply -f nginx.yml出于安全考慮,默認配置下 Kubernetes 不會將 Pod 調度到 Master 節點。
如果希望將 master 也當作 Node 使用,可以執行如下命令:kubectl taint node masterName node-role.kubernetes.io/master-如果要恢復 Master Only 狀態,執行如下命令:kubectl taint node masterName node-role.kubernetes.io/master="":NoSchedule
5、用label控制pod的位置
kubectl label node node1 disktype=ssd #定義node1為disktype
kubectl get node --show-labels #查看節點label重新定義nginx.yml將pod部署到node1

[k8s@master ~]$ kubectl apply -f nginx.yml

kubectl label node node1 disktype- #刪除node label disktype刪除label不會影響原來部署的pod
6、DaemonSet
特點:每個 Node 上最多只能運行一個副本。DaemonSet 的典型應用場景有:在集群的每個節點上運行存儲 Daemon,比如 glusterd 或 ceph。在每個節點上運行日志收集 Daemon,比如 flunentd 或 logstash。在每個節點上運行監控 Daemon,比如 Prometheus Node Exporter 或 collectd。
kubectl get daemonset --namespace=kube-system # 查看DaemonSet運行的系統組件kubectl edit deployment nginx-deployment 查看資源配置和運行狀態
運行自己的daemonset
運行prometheus監控

① 直接使用 Host 的網絡。
② 設置容器啟動命令。
③ 通過 Volume 將 Host 路徑 /proc、/sys 和 / 映射到容器中。我們將在后面詳細討論 Volume。
執行:kubectl apply -f node_exporter.yml

7、Job
服務類容器
Deployment、ReplicaSet、DaemonSet
http server ,daemon
工作類容器
Job
一次性任務

① batch/v1 是當前 Job 的 apiVersion。
② 指明當前資源的類型為 Job。
③ restartPolicy 指定什么情況下需要重啟容器。對于 Job,只能設置為 Never 或者 OnFailure。對于其他 controller(比如 Deployment)可以設置為 Always 。
Job的并行性
parallelism:設置并行運行pod數量
completions:設置完成pod總數

定時Job

① batch/v2alpha1 是當前 CronJob 的 apiVersion。
② 指明當前資源的類型為 CronJob。
③ schedule 指定什么時候運行 Job,其格式與 Linux cron 一致。這里 */1 * * * * 的含義是每一分鐘啟動一次。
④ jobTemplate 定義 Job 的模板,格式與前面 Job 一致。
Kubernetes 默認沒有 enable CronJob 功能,需要在 kube-apiserver 中加入這個功能。方法很簡單,修改 kube-apiserver 的配置文件 /etc/kubernetes/manifests/kube-apiserver.yaml:

然后重啟 kubelet 服務:systemctl restart kubelet
#kubectl api-versions 查看是否支持batch/v2alpha1



