Kubernetes 容器應用

2018年7月27日16:47:36 發表評論 4,124 ℃

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

Kubernetes 容器應用

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

Kubernetes 容器應用

Controlled By 指明此ReplicaSet是由Deploymnet nginx-deployment創建的。

kubectl get pod #查看pod

Kubernetes 容器應用

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

Kubernetes 容器應用

Controlled By 指明此 Pod 是由 nginx-deployment-6fb585c4cc 創建。Events 記錄了 Pod 的啟動過程。

總結一下這個過程:用戶通過 kubectl 創建 Deployment。Deployment 創建 ReplicaSet。ReplicaSet 創建 Pod。

Kubernetes 容器應用

對象的命名方式是:子對象的名字 = 父對象名字 + 隨機字符串或數字

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 的內容為:

Kubernetes 容器應用

3、Deployment配置文件簡介

Kubernetes 容器應用

① 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

Kubernetes 容器應用

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

Kubernetes 容器應用

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監控

Kubernetes 容器應用

① 直接使用 Host 的網絡。

② 設置容器啟動命令。

③ 通過 Volume 將 Host 路徑 /proc、/sys 和 / 映射到容器中。我們將在后面詳細討論 Volume。

執行:kubectl apply -f node_exporter.yml

Kubernetes 容器應用

7、Job

服務類容器

Deployment、ReplicaSet、DaemonSet

http server ,daemon

工作類容器

Job

一次性任務

Kubernetes 容器應用

① batch/v1 是當前 Job 的 apiVersion。

② 指明當前資源的類型為 Job。

③ restartPolicy 指定什么情況下需要重啟容器。對于 Job,只能設置為 Never 或者 OnFailure。對于其他 controller(比如 Deployment)可以設置為 Always 。

Job的并行性

parallelism:設置并行運行pod數量

completions:設置完成pod總數

Kubernetes 容器應用

定時Job

Kubernetes 容器應用

① 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:

Kubernetes 容器應用

然后重啟 kubelet 服務:systemctl restart kubelet

#kubectl api-versions 查看是否支持batch/v2alpha1

Kubernetes 容器應用

【騰訊云】云服務器、云數據庫、COS、CDN、短信等云產品特惠熱賣中

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: