1. 概述
老話說的好:努力學習,努力提高,做一個有真才實學的人。
言歸正傳,之前我們聊了 如何使用國內的映象源搭建 kubernetes(k8s)叢集 ,今天我們來聊聊如何在 kubernetes(k8s)上部署容器。
官網教程:https://kubernetes.io/docs/home/
2. 部署 Pod
2.1 概述
Pod 是 kubernetes(k8s)的最小單元,一個 Pod 中可部署多個容器,這裡我們以部署 Nginx 為例,先介紹一下 kubernetes(k8s)的編排指令碼。
2.2 Pod 指令碼例子
新建一個指令碼,名為 my-pod.yml
# vi my-pod.yml
apiVersion: v1 kind: Pod metadata: name: my-nginx spec: containers: - name: my-nginx image: nginx
apiVersion:指令碼的版本,Pod 通常使用 v1 這個版本
kind:指令碼的型別,這裡就是 Pod
metadata.name:Pod 的名稱
spec.containers:Pod 中執行的容器,可以是多個
注意:下級相對上級縮排兩個空格,而不是Tab。
2.3 執行指令碼
# kubectl apply -f my-pod.yml
2.4 檢視 pod 資訊
# kubectl get pod -o wide
ContainerCreating 狀態代表 pod 正在新增
Running 狀態代表 pod 已經執行
2.5 檢視 pod 詳細資訊
# kubectl describe pod my-nginx
2.6 刪除 pod
# kubectl delete pod my-nginx
3. 部署 Deployment
3.1 概述
在 kubernetes(k8s)中, 使用 Pod 指令碼部署 pod,只能單節點部署,無法高可用。
因此需要用到 Deployment ,Deployment 可以指定 Pod 的副本數,通常情況是使用 Deployment 部署。
3.2 Deployment 指令碼例子
新建一個指令碼,名為 my-deployment.yml
# vi my-deployment.yml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx-deployment template: metadata: labels: app: nginx-deployment spec: containers: - name: my-nginx image: nginx
spec.replicas:部署 Pod 的副本數
sepc.template.metadata.labels.app:deployment 標籤名稱。
3.3 執行指令碼
# kubectl apply -f my-deployment.yml
3.4 檢視 deployment 資訊
# kubectl get deployment
# kubectl get pod -o wide
3.5 檢視 deployment 詳細資訊
# kubectl describe deployment nginx-deployment
3.6 刪除 deployment
# kubectl delete deployment nginx-deployment
4. 部署 Service
4.1 概述
上一步我們使用 deployment 部署了多個 Pod 例項,但我們無法訪問到 Pod 中的 Nginx。
此時就要藉助 Service。
4.2 Service 指令碼例子
新建一個指令碼,名為 my-service.yml
# vi my-service.yml
apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: NodePort selector: app: nginx-deployment ports: - protocol: TCP nodePort: 30000 port: 20000 targetPort: 80
spec.type:Service 的型別,NodePort 是埠對映的方式,就是把容器的埠對映到宿主機的埠。
spec.selector.app:作用於哪個 deployment 標籤。
spec.ports:是埠對映設定,targetPort 是容器中服務真實的埠,Nginx預設使用 80 埠,port 是Service 對外暴露的埠,用於 K8s 內部訪問,nodePort 是對映的宿主機的埠。
4.3 執行指令碼
# kubectl apply -f my-service.yml
4.4 檢視 Service 資訊
# kubectl get service -o wide
4.5 檢視 Service 詳細資訊
# kubectl describe service nginx-service
4.6 刪除 Service
# kubectl delete service nginx-service
4.7 訪問 Nginx
地址:http://宿主機IP:30000
5. 綜述
今天聊了一下 kubernetes(k8s)叢集上是如何部署容器的,希望可以對大家的工作有所幫助。
歡迎幫忙點贊、評論、轉發、加關注 :)
關注追風人聊Java,每天更新Java乾貨。
6. 個人公眾號
追風人聊Java,歡迎大家關注