iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Kubernetes

K8s 資料庫管理系統系列 第 7

day 7 k8s的歷史

  • 分享至 

  • xImage
  •  

今天是第七天我們可以稍微做個k8s的歷史介紹,以下是我查詢資料得到訊息
Kubernetes(簡稱 K8s)是一個開源的容器編排平台,主要用來自動化應用的部署、擴展和管理。其歷史起源於 Google 的內部系統 BorgOmega,這兩個系統在 Google 內部被廣泛用來管理大量的容器化工作負載。Kubernetes 於 2014 年由 Google 開源,並由 Cloud Native Computing Foundation (CNCF) 接手維護,成為當今最受歡迎的容器編排解決方案。

Kubernetes 的發展歷程:

  1. 2003 - 2004:Google 內部開發 Borg,用來管理數千台伺服器上的工作負載。
  2. 2013:Google 開始研發 Kubernetes,目的是將 Borg 的經驗帶入開源社區。
  3. 2014:Kubernetes 被 Google 正式開源,並迅速吸引了其他公司與開發者的參與。
  4. 2015:Kubernetes 1.0 正式發佈,並加入 CNCF 管理。
  5. 2017:Kubernetes 成為事實上的容器編排標準,各大雲平台(如 AWS、Azure、Google Cloud)都開始支持 Kubernetes。
    Kubernetes 簡稱為 K8s,這個簡稱源於 “Kubernetes” 中「K」和「s」之間的 8 個字母。為了簡化發音和書寫,社群廣泛使用 K8s 這個縮寫。這樣的縮寫方式,也常見於技術領域中的其他單詞,例如「i18n」代表 "internationalization"。因此,Kubernetes 被簡化為 K8s

Kubernetes 本質上是一個容器編排平台,專門用來管理和調度大量的容器應用。它能幫助開發者和運維工程師簡化部署、擴展和運行容器化應用的過程,特別是應對複雜的分散式應用。

簡單來說,K8s 可以自動處理以下幾件事:

  1. 自動部署和回滾:根據定義的配置文件,K8s 可以自動部署應用並在失敗時回滾到之前的穩定狀態。
  2. 自動化負載均衡:K8s 自動將流量分配到多個容器上,確保負載均衡。
  3. 自動伸縮:可以根據應用的需求自動擴展或縮減容器數量。
  4. 自動修復:當一個容器崩潰時,K8s 會自動重啟它,確保應用運行正常。
  5. 服務發現:K8s 能自動為應用配置內部 DNS,讓應用之間的通信更方便。

K8s 讓開發者可以將更多的精力放在應用邏輯上,而不用過多擔心底層的基礎架構配置與維護。

範例程式碼:

以下是一個簡單的 Kubernetes 範例,展示如何部署一個 NGINX 應用並暴露服務。

1. Pod 定義檔

這個範例中的 nginx-pod.yaml 定義了一個 NGINX 容器。

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80
  • apiVersion: Kubernetes API 版本。
  • kind: 這是 Pod 資源的定義。
  • metadata: Pod 的名稱和標籤。
  • spec: 容器的具體規範。
  • containers: 容器清單,這裡使用了官方的 nginx 映像檔,並暴露 80 端口。

2. 服務(Service)定義檔

nginx-service.yaml 則定義了一個 Kubernetes Service,將 Pod 暴露給集群外部訪問。

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer
  • kind: 這裡定義的是 Service。
  • selector: 使用標籤來選擇要暴露的 Pod。
  • ports: 定義外部和內部的端口映射,外部用戶可以通過 port: 80 訪問。
  • type: LoadBalancer,用於將流量導向多個 Pod,對外暴露服務。

3. 使用 kubectl 指令部署應用

# 創建 Pod
kubectl apply -f nginx-pod.yaml

# 創建 Service
kubectl apply -f nginx-service.yaml

# 查看 Pod 狀態
kubectl get pods

# 查看 Service 狀態
kubectl get services

這樣,我的 NGINX 應用就會被部署到 Kubernetes 集群上,並通過 LoadBalancer 對外暴露。

這些只是 Kubernetes 的基礎功能,Kubernetes 還提供了豐富的功能來進行應用自動化管理,例如 自動伸縮(Horizontal Pod Autoscaling, HPA)滾動更新資源限制等。


上一篇
day 6 k8s 大型公司備份商業機密資料庫管理系統
下一篇
day 8 k8s圖書館資料庫管理系統
系列文
K8s 資料庫管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言