Kubernetes(K8s)極速入門


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

例如:http://192.168.1.12:30000/

 

 

5. 綜述

今天聊了一下 kubernetes(k8s)集群上是如何部署容器的,希望可以對大家的工作有所幫助。

歡迎幫忙點贊、評論、轉發、加關注 :)

關注追風人聊Java,每天更新Java干貨。

 

6. 個人公眾號

追風人聊Java,歡迎大家關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM