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,歡迎大家關注