Kubernetes 備忘單:架構、組件、命令表

已發表: 2020-12-15

Kubernetes 已成為行業的重要組成部分,並正在改變技術世界。 KubeCon 的聯合主席 Janet Kuo 談到了 Kubernetes 的特性及其在未來的重要性。 她談到了將改變世界的 Kubernetes 擴展和解決方案

這份備忘單將為 Kubernetes 實施的專業人士提供參考。 它包含所有必要的詳細信息,以幫助剛接觸 Kubernetes 的初學者。 Kubernetes 備忘單是一種快速便捷的媒介,可以參考 Kubernetes 的所有基本概念和命令。

目錄

關於 Kubernetes

用於跨主機集群自動部署和擴展容器以提供以容器為中心的基礎設施的開源平台稱為 Kubernetes(也稱為“Kube”或 k8s)。 它允許通過集群來輕鬆有效地管理運行 Linux 容器的不同主機。

Kubernetes 是一個旨在完全管理容器化應用程序和服務的生命週期的平台。 Kubernetes 用戶可以定義應用程序運行和與不同應用程序交互的方式。

用戶可以使用 Kubernetes 在不同版本的應用程序之間切換流量、執行更新、擴展和縮減服務等。 它在管理應用程序方面為用戶提供了高度的靈活性、可靠性和強大的功能。

Kubernetes 的一些主要特性是:

  • 通過更好地利用硬件來最大化資源。
  • 跨多個主機的容器編排器。
  • 自動化部署過程和更新。
  • 能夠運行 Linux 容器。
  • 自動縮放有助於在集群節點上啟動容器。
  • 根據需要放大和縮小。
  • 通過替換、重新調度和重新啟動死容器來進行自我修復。
  • 自動回滾和推出。
  • 負載平衡和服務發現。
  • 自動重啟、自動放置、自動複製等

閱讀:深度學習算法

Kubernetes 架構

Kubernetes 的架構由層組成:高層和低層。 抽象較高層的複雜性可以在較低層中找到。 單獨的物理機或虛擬機被匯集到一個集群中。 共享網絡用於每個服務器之間的通信。 因此,就像其他分佈式平台一樣,Kubernetes 有一個(至少)一個主節點和多個計算節點。

  • Kubernetes 的 master 調度部署,公開 API 並管理整個 Kubernetes 集群。
  • 節點運行容器運行時、與主節點通信的代理以及其他監控組件、日誌記錄等。

Kubernetes 架構的組件

讓我們看一下 Kubernetes 架構中 master 和 node 的用途和組成部分。

掌握

主節點維護集群的期望狀態。 由於它管理整個集群,所以它被稱為master。 它包含了:

  • API 服務器: Kubernetes API 服務器
  • 調度器:用於工作節點中的 pod 調度
  • 控制器:管理 pod 複製
  • etcd:元數據服務

節點

它包含對運行 pod 很重要的必要服務。 主節點管理節點。 它也被稱為小黃人。 它包含了:

  • Pod:容器組
  • Docker:基於容器的技術,操作系統的用戶空間。
  • Kubelet:負責維護一組 pod 的容器代理。
  • Kube-proxy:路由從服務進入節點的流量

現在,讓我們了解一下 Kubernetes 的重要命令。

Kubectl 命令

Kubectl 是 Kubernetes 的命令行工具。 基本的 Kubectl 命令可以分為:

  • Pod 和容器內省
  • 集群內省
  • 調試
  • 快速命令
  • 對象

Pod 和容器內省

功能性命令
用於描述 pod 名稱Kubectl 描述 pod<名稱>
用於列出所有當前的 pod Kubectl 獲取 pod
用於列出所有復制控制器kubectl 獲取 rc
用於顯示複製控制器名稱Kubectl 描述 rc <名稱>
用於列出命名空間中的複制控制器Kubectl 獲取 rc –namespace=”namespace”
用於顯示服務名稱Kubectl 描述 svc<名稱>
用於列出服務kubectl 獲取 cvc
用於連續觀察節點。 Kubectl 獲取節點 -w
用於刪除 pod Kubectl 刪除 pod<名稱>

集群內省

功能性命令
用於獲取版本相關信息Kubectl 版本
用於獲取配置詳細信息Kubectl 配置 g 查看
用於獲取集群相關信息Kubectl 集群信息
用於獲取有關節點的信息Kubectl 描述節點<節點>

調試命令

功能性命令
用於顯示 pod 的指標Kubectl 頂部吊艙
用於顯示節點的指標Kubectl 頂級節點
用於觀看 Kubelet 日誌watch -n 2 cat/var/log/kublet.log
從容器的服務中獲取日誌Kubectl 記錄 -f<名稱>>[-c< $container>]
通過選擇容器在服務上執行命令Kubectl exec<service><commands>[-c<$container>]

快速命令

以下快速命令經常使用,因此非常有用。

功能性命令
用於啟動具有名稱和圖像的 pod。 Kubectl 運行<名稱> — image=<圖像名稱>
用於創建 <manifest.yaml> 中描述的服務Kubectl create -f <manifest.yaml>
用於擴展複製計數器以計算實例數。 Kubectl scale –replicas=<count>rc<name>
用於將外部端口映射到內部複製端口。 公開 rc<name> –port=<external>–target-port=<internal>
用於停止 <n> 中的所有 pod kubectl drain<n>--delete-local-data--force--ignore-daemonset
用於創建命名空間。 Kubectl 創建命名空間 <命名空間>
用於允許主節點運行 pod。 Kubectltaintnodes –all-node-role.kuernetes.io/master-

對象

Kubernetes 中使用的一些熟悉的對像如下:

常見對象列表
全部控制器修訂
cm=conf gmaps 集群角色綁定
定時任務cs=組件狀態
部署=部署限制=限制範圍
ev=事件hpa= 水平 pod 自動縮放
工作ds= 守護程序集
否 = 節點ns= 命名空間
po=豆莢Pod 預設
psp= pod 安全策略Pv= 持久卷
quota= 資源配額rs = 副本集
角色rc=複製控制器
sc= 存儲類pdb= pod 分配預算
集群角色秘密
crd=自定義資源定義Pod 模板
csr= 證書籤名請求sa= 服務帳戶
Netpol- 網絡政策角色綁定
ing=入口pvc= 持久卷聲明
ep=終點sts=有狀態集

另請閱讀:深度學習中的正則化

Kubernetes 命令備忘單

關於 Kubernetes 的所有基本信息,它的架構和命令都顯示在下面的 Kubernetes 備忘單中:

如果您有興趣了解有關深度學習技術、機器學習的更多信息,請查看 IIIT-B 和 upGrad 的機器學習和人工智能 PG 文憑,該文憑專為在職專業人士設計,提供 450 多個小時的嚴格培訓、30 多個案例研究和任務、IIIT-B 校友身份、5 個以上實用的實踐頂點項目和頂級公司的工作協助。

什麼是 Kubernetes?

Kubernetes 是一個用於自動部署、擴展和管理容器的開源平台。 容器是一個可立即運行的軟件包,其中包含運行應用程序所需的一切:代碼、運行時環境、應用程序和系統庫。 容器就像應用程序的邏輯單元,當 Kubernetes 對它們進行分組時,管理和發現容器變得很容易。 這些容器跨主機部署和擴展,以提供以容器為中心的基礎架構。 簡而言之,它是一個管理容器化應用程序整個生命週期的平台。

Kubernetes 架構的主要組件是什麼?

Kubernetes 架構中有兩個主要組件——主節點和工作節點。 節點是主要的工作機器,對於運行一組稱為 pod 的集群很重要。 整個集群由主節點管理,而工作節點執行主節點分配的任務。 這些節點中有許多內置組件。 主節點包含 Kubernetes API Server、Kubernetes Scheduler、Kubernetes Controller 和 Etcd。 工作節點有 pod、docker、kubelet 和 kube-proxy。

kubelet 和 kube-proxy 是做什麼的?

Kubelet 存在於每個節點中,可確保容器在 pod 中運行良好。 它通過獲取一組主要通過 apiserver 提供的 PodSpecs 並檢查這些 PodSpecs 中存在的容器來做到這一點。 PodSpec 是描述 pod 的 YAML 或 JSON 對象。 Kubernetes Network Proxy,也稱為 kube-proxy,維護節點上的網絡規則。 通過這些網絡規則,可以從集群內部或外部的網絡會話與 Pod 進行通信。 如果 OS 包過濾層不可用,Kube-proxy 會轉發流量。