K8s快速入門詳解

一、容器與K8s

1、什麼是容器

容器是一種輕量級的、可移植的虛擬化技術,將應用程序及其所有依賴項打包到一個可移植的圖像中,以便在不同的計算環境中運行。容器提供了與虛擬機類似的隔離性,可以幫助開發人員在不同的環境中更加輕鬆地構建、打包、分發和部署應用程序。

2、什麼是Kubernetes

Kubernetes(簡稱為K8s)是一個開源的容器編排平台。它可以幫助我們自動化地部署、擴展和管理容器化的應用程序,從而讓我們更加輕鬆地管理複雜的分布式應用程序,同時也降低了運維的成本。

3、容器與K8s的關係

容器是K8s裡面的基本組件,K8s通過容器對應用程序及其依賴項進行打包、分發和部署。K8s還提供了許多高級功能,比如負載均衡、伸縮、自動化應用程序部署等,可以幫助我們更加有效地管理容器化的應用程序。

二、K8s快速入門

1、環境準備


# 安裝Minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \ 
  && chmod +x minikube && sudo mv minikube /usr/local/bin/
# 安裝Kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s \ 
    https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \ 
    && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# 啟動Minikube集群
minikube start

2、創建一個Deployment


# 創建一個Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  # 應用程序副本數
  replicas: 3
  selector:
    # 匹配標籤
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          # 鏡像名稱
          image: nginx:1.14.2
          ports:
            - containerPort: 80

3、創建一個Service


# 創建一個Service
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - name: http
      port: 80
      targetPort: 80
  type: LoadBalancer

4、訪問應用程序


kubectl get service nginx-service
# 輸出類似如下內容
# NAME            TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
# nginx-service   LoadBalancer   10.0.142.100        80:30709/TCP   111s
# 訪問 EXTERNAL-IP:80 即可訪問應用程序

三、使用K8s進行自動化部署

1、使用Docker構建應用程序鏡像


# 在應用程序根目錄下創建一個名為 Dockerfile 的文件
# 編寫Dockerfile,示例:
FROM node:12.13.0-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]

# 構建鏡像
docker build -t myapp:v1 .

2、使用Kubectl進行部署


# 創建一個Deployment
kubectl create deployment myapp --image=myapp:v1 --replicas=3
# 創建一個Service
kubectl expose deployment myapp --type=LoadBalancer --port=80

3、使用Helm進行自動化部署


# 安裝Helm
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
# 添加一個Helm倉庫
helm repo add stable https://charts.helm.sh/stable
# 安裝一個Chart
helm install myapp stable/mysql

四、K8s的高級特性

1、自動伸縮

K8s可以根據資源利用率自動伸縮應用程序,讓我們無需手動調整容器的數量。


apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1
        ports:
        - containerPort: 80
      resources:
        requests:
          cpu: 100m
          memory: 100Mi
        limits:
          cpu: 500m
          memory: 500Mi
---
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

2、服務發現和負載均衡

K8s可以自動發現容器,並且提供了負載均衡功能,讓我們輕鬆地訪問容器化的應用程序。


apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
  selector:
    app: myapp
  type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myapp-ingress
spec:
  backend:
    serviceName: myapp
    servicePort: 80

3、配置管理

K8s可以幫助我們輕鬆地管理應用程序的配置文件,讓我們可以快速地更改應用程序的配置。


apiVersion: v1
kind: ConfigMap
metadata:
  name: myapp-config
data:
  DB_HOST: mydb
  DB_USER: user
  DB_PASSWORD: password
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  containers:
  - name: myapp
    image: myapp:v1
    envFrom:
    - configMapRef:
        name: myapp-config

五、總結

K8s是一個功能強大、靈活性高的容器編排平台,在大規模容器化應用程序的部署和管理方面有着重要的作用。本文通過從容器和K8s、K8s快速入門、自動化部署、K8s的高級特性等幾個方面詳細闡述了K8s的相關知識,並給出了相應的代碼示例,相信讀者可以更加深入地了解K8s,並將其應用到實際的開發工作中。

原創文章,作者:ZFLCR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/369170.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ZFLCR的頭像ZFLCR
上一篇 2025-04-12 13:00
下一篇 2025-04-12 13:00

相關推薦

  • Python wordcloud入門指南

    如何在Python中使用wordcloud庫生成文字雲? 一、安裝和導入wordcloud庫 在使用wordcloud前,需要保證庫已經安裝並導入: !pip install wo…

    編程 2025-04-29
  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29
  • Python豎線圖:從入門到精通

    Python豎線圖,即Python的繪圖工具matplotlib中的一種圖形類型,具有直觀、易於理解的特點,適用於各種數據分析和可視化場景。本文從初學者角度出發,介紹Python豎…

    編程 2025-04-29
  • Python爬取數據指南-從入門到精通

    Python爬蟲是指用Python編寫程序,自動化地獲取網絡上的信息,並進行處理、分析和存儲。以下是Python爬取數據的指南,從入門到精通。 一、獲取網頁數據 Python爬蟲的…

    編程 2025-04-29
  • 二階快速求逆矩陣

    快速求逆矩陣是數學中的一個重要問題,特別是對於線性代數中的矩陣求逆運算,如果使用普通的求逆矩陣方法,時間複雜度為O(n^3),計算量非常大。因此,在實際應用中需要使用更高效的算法。…

    編程 2025-04-28
  • Python自學多久能入門?

    Python是一門極具優勢的編程語言,無論在人工智能、數據分析、Web開發等領域都有廣泛的應用,所以越來越多的人開始學習Python。但是對於初學者來說,Python自學多久能入門…

    編程 2025-04-28
  • Python導出微信群聊天記錄:從入門到實踐

    微信群聊是我們日常生活中與家人、朋友聊天交流的重要平台。但是,當備份和查看微信群聊的聊天記錄時,我們常常會遇到各種問題。這時,我們可以使用Python對微信群聊天記錄進行導出、備份…

    編程 2025-04-28
  • Python熵權法入門指南

    本文將為你介紹Python熵權法的基礎知識以及如何在實際應用中使用熵權法,讓你能夠更好地理解該算法並將其運用到實際工作中。 一、什麼是Python熵權法? Python熵權法是一種…

    編程 2025-04-28
  • 西瓜創客python課程:從入門到精通

    本文將對西瓜創客python課程進行詳細闡述。旨在為初學者提供一個從入門到精通的學習路徑,並為已經有一定基礎的人提供更深入的學習體驗。 一、為什麼選擇西瓜創客python課程 西瓜…

    編程 2025-04-28

發表回復

登錄後才能評論