前言
文字已收錄至我的GitHub倉庫,歡迎Star:github.com/bin39232820…
種一棵樹最好的時間是十年前,其次是現在
我知道很多人不玩qq了,但是懷舊一下,歡迎加入六脈神劍Java菜鳥學習群,群聊號碼:549684836 鼓勵大家在技術的路上寫部落格
絮叨
昨天把叢集搭建成功了,我們今天繼續幹。
通過資源配置執行容器
我們知道通過 run 命令啟動容器非常麻煩,Docker 提供了 Compose 為我們解決了這個問題。那 Kubernetes 是如何解決這個問題的呢?其實很簡單,使用 kubectl create 命令就可以做到和 Compose 一樣的效果了,該命令可以通過配置檔案快速建立一個叢集資源物件
建立 YAML 配置檔案
以部署 Nginx 為例
部署 Deployment
建立一個名為 nginx-deployment.yml 的配置檔案 v1.16.0 之前
注意: extensions/v1beta1 不再支援部署 Deployment,並且修改了少量命令
# API 版本號
apiVersion: extensions/v1beta1
# 型別,如:Pod/ReplicationController/Deployment/Service/Ingress
kind: Deployment
# 後設資料
metadata:
# Kind 的名稱
name: nginx-app
spec:
# 部署的例項數量
replicas: 2
template:
metadata:
labels:
# 容器標籤的名字,釋出 Service 時,selector 需要和這裡對應
name: nginx
spec:
# 配置容器,陣列型別,說明可以配置多個容器
containers:
# 容器名稱
- name: nginx
# 容器映象
image: nginx
# 暴露埠
ports:
# Pod 埠
- containerPort: 80
複製程式碼
v1.16.0 之後
# API 版本號:由 extensions/v1beta1 修改為 apps/v1
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-app
spec:
# 增加了選擇器配置
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
# 設定標籤由 name 修改為 app
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
複製程式碼
# 部署
kubectl create -f nginx-deployment.yml
# 刪除
kubectl delete -f nginx-deployment.yml
複製程式碼
釋出 Service 建立一個名為 nginx-service.yml 的配置檔案 v1.16.0 之前
# API 版本號
apiVersion: v1
# 型別,如:Pod/ReplicationController/Deployment/Service/Ingress
kind: Service
# 後設資料
metadata:
# Kind 的名稱
name: nginx-http
spec:
# 暴露埠
ports:
## Service 暴露的埠
- port: 80
## Pod 上的埠,這裡是將 Service 暴露的埠轉發到 Pod 埠上
targetPort: 80
# 型別
type: LoadBalancer
# 標籤選擇器
selector:
# 需要和上面部署的 Deployment 標籤名對應
name: nginx
複製程式碼
v1.16.0 之後
apiVersion: v1
kind: Service
metadata:
name: nginx-http
spec:
ports:
- port: 80
targetPort: 80
type: LoadBalancer
selector:
# 標籤選擇器由 name 修改為 app
app: nginx
複製程式碼
# 部署
kubectl create -f nginx-service.yml
# 刪除
kubectl delete -f nginx-service.yml
複製程式碼
驗證是否生效
檢視 Pod 列表
kubectl get pods
# 輸出如下
NAME READY STATUS RESTARTS AGE
nginx-app-64bb598779-2pplx 1/1 Running 0 25m
nginx-app-64bb598779-824lc 1/1 Running 0 25m
複製程式碼
檢視 Deployment 列表
kubectl get deployment
# 輸出如下
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-app 2/2 2 2 25m
複製程式碼
檢視 Service 列表
kubectl get service
# 輸出如下
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 20h
nginx-http LoadBalancer 10.98.49.142 <pending> 80:31631/TCP 14m
複製程式碼
檢視 Service 詳情
kubectl describe service nginx-http
# 輸出如下
Name: nginx-http
Namespace: default
Labels: <none>
Annotations: <none>
Selector: name=nginx
Type: LoadBalancer
IP: 10.98.49.142
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 31631/TCP
Endpoints: 10.244.141.205:80,10.244.2.4:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
複製程式碼
通過瀏覽器訪問 http://192.168.62.128:31556/
整合環境部署
也可以不區分配置檔案,一次性部署 Deployment 和 Service,建立一個名為 nginx.yml 的配置檔案,配置內容如下:
v1.16.0 之前
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-app
spec:
replicas: 2
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-http
spec:
ports:
- port: 80
targetPort: 80
# 可以指定 NodePort 埠,預設範圍是:30000-32767
# nodePort: 30080
type: LoadBalancer
selector:
name: nginx
複製程式碼
v1.16.0 之後
# API 版本號:由 extensions/v1beta1 修改為 apps/v1
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-app
spec:
# 增加了選擇器配置
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
# 設定標籤由 name 修改為 app
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-http
spec:
ports:
- port: 80
targetPort: 80
type: LoadBalancer
selector:
# 標籤選擇器由 name 修改為 app
app: nginx
複製程式碼
# 部署
kubectl create -f nginx.yml
# 刪除
kubectl delete -f nginx.yml
複製程式碼
結尾
今天就是把.yml的部署釋出方式實現了一遍。
日常求贊
好了各位,以上就是這篇文章的全部內容了,能看到這裡的人呀,都是真粉。
創作不易,各位的支援和認可,就是我創作的最大動力,我們下篇文章見
六脈神劍 | 文 【原創】如果本篇部落格有任何錯誤,請批評指教,不勝感激 !