今天是第七天我們可以稍微做個k8s的歷史介紹,以下是我查詢資料得到訊息
Kubernetes(簡稱 K8s)是一個開源的容器編排平台,主要用來自動化應用的部署、擴展和管理。其歷史起源於 Google 的內部系統 Borg 和 Omega,這兩個系統在 Google 內部被廣泛用來管理大量的容器化工作負載。Kubernetes 於 2014 年由 Google 開源,並由 Cloud Native Computing Foundation (CNCF) 接手維護,成為當今最受歡迎的容器編排解決方案。
Kubernetes 本質上是一個容器編排平台,專門用來管理和調度大量的容器應用。它能幫助開發者和運維工程師簡化部署、擴展和運行容器化應用的過程,特別是應對複雜的分散式應用。
簡單來說,K8s 可以自動處理以下幾件事:
K8s 讓開發者可以將更多的精力放在應用邏輯上,而不用過多擔心底層的基礎架構配置與維護。
以下是一個簡單的 Kubernetes 範例,展示如何部署一個 NGINX 應用並暴露服務。
這個範例中的 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 端口。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,對外暴露服務。# 創建 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)、滾動更新、資源限制等。