成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

測試技能提升篇——K8s的核心概念

云計算 云原生
隨著應用的日益復雜,容器的數量也不斷增加,由此衍生出管理運維容器這一重要問題。隨著云計算的發展,容器的漂移也是云端最大的挑戰。k8s正是在這種業務的驅動下,提出了一套全新的基于容器技術的分布式架構領先方案,這是容器技術領域中一個重大突破和創新。

本文重點介紹k8s中所涉及的核心概念,能夠幫助讀者快速地從整體方面了解k8s,便于初學者在實際工作中從事相關工作!

Docker 和K8s

Docker是應用最廣泛的容器技術,它通過打包鏡像、啟動容器來創建服務。

k8s的全稱 kubernetes。它是一個完整的分布式系統支撐平臺,集群管理功能齊全。

Kubernetes同時提供完善的管理工具,涵蓋了開發、部署、測試、運行監控等各個環節。

隨著應用的日益復雜,容器的數量也不斷增加,由此衍生出管理運維容器這一重要問題。隨著云計算的發展,容器的漂移也是云端最大的挑戰。k8s正是在這種業務的驅動下,提出了一套全新的基于容器技術的分布式架構領先方案,這是容器技術領域中一個重大突破和創新。

簡單地理解k8s可以管理運維容器(docker) 下圖是k8s的整體架構:

k8s中的重要概念

Master 節點

Master 節點負責對集群中所有容器的調度,各種資源對象的控制,以及響應集群的所有請求。

Node 節點

Node 節點是 Kubernetes 的工作節點,負責運行業務容器。

集群(Cluster)

集群是一組被 Kubernetes 統一管理和調度的節點,被 Kubernetes 納管的節點可以是物理機或者虛擬機。集群其中一部分節點作為 Master 節點,負責集群狀態的管理和協調,另一部分作為 Node 節點,負責執行具體的任務,實現用戶服務的啟停等功能。

標簽(Label)

Label 是一組鍵值對,每一個資源對象都會擁有此字段。Kubernetes 中使用 Label 對資源進行標記,然后根據 Label 對資源進行分類和篩選。

命名空間(Namespace)

Kubernetes 中通過命名空間來實現資源的虛擬化隔離,將一組相關聯的資源放到同一個命名空間內,避免不同租戶的資源發生命名沖突,從邏輯上實現了多租戶的資源隔離。

容器組(Pod)

Pod 是 Kubernetes 中的最小調度單位,它由一個或多個容器組成,一個 Pod 內地容器共享相同的網絡命名空間和存儲卷。Pod 是真正的業務進程的載體,在 Pod 運行前,Kubernetes 會先啟動一個 Pause 容器開辟一個網絡命名空間,完成網絡和存儲相關資源的初始化,然后再運行業務容器。也就是說每個Pod中都運行著一個特殊的被稱為Pause的容器,其他容器則為業務容器,這些業務容器共享Pause容器的網絡和Volume掛載卷。后面我們會繼續對其進行重點講解。

無狀態部署(Deployment)

Deployment 是一組 Pod 的抽象,Deployment用于部署無狀態的服務,通過 Deployment 控制器保障用戶指定數量的容器副本正常運行,并且實現了滾動更新等高級功能,當我們需要更新業務版本時,Deployment 會按照我們指定策略自動地殺死舊版本的 Pod 并且啟動新版本的 Pod。

有狀態部署(StatefulSet)

StatefulSet本質上是Deployment的一種變體用于部署有狀態的服務,它所管理的Pod擁有固定的Pod名稱,啟停順序,在StatefulSet中,Pod名字稱為網絡標識(hostname),還必須要用到共享存儲。

任務(Job)

Job 可以幫助我們創建一個 Pod 并且保證 Pod 的正常退出,如果 Pod 運行過程中出現了錯誤,Job 控制器可以幫助我們創建新的 Pod,直到 Pod 執行成功或者達到指定重試次數。一種簡單的使用場景下,你會創建一個 Job 對象以一種可靠的方式運行某 Pod 直到完成。 當第一個 Pod 失敗或者被刪除(比如因為節點硬件失效或者重啟)時,Job 對象會啟動一個新的 Pod。

服務(Service)

Service 是一組 Pod 訪問配置的抽象。每個pod有自己的ip地址,當有多個pod提供相同的服務的時候,就需要有負載均衡的能力,這里就引入了service。

Pod

Pod的理解

Pod:k8s管理的最小單位,包括一個或多個容器,是提供實際業務服務的組件。一個Pod封裝一個應用容器(也可以有多個容器),存儲資源、一個獨立的網絡IP以及管理控制容器運行方式的策略選項。Pod代表部署的一個單位:Kubernetes中單個應用的實例,它可能由單個容器或多個容器共享組成的資源。

Pod中運行一個容器。“one-container-per-Pod”模式是Kubernetes最常見的用法; 在這種情況下,你可以將Pod視為單個封裝的容器,但是Kubernetes是直接管理Pod而不是容器。Pods中運行多個需要一起工作的容器。Pod可以封裝緊密耦合的應用,它們需要由多個容器組成,它們之間能夠共享資源,這些容器可以形成一個單一的內部service單位 - 一個容器共享文件,另一個“sidecar”容器來更新這些文件,如下圖所示。Pod將這些容器的存儲資源作為一個實體來管理。

Pods提供兩種共享資源:網絡和存儲。

網絡

每個Pod被分配一個獨立的IP地址,Pod中的每個容器共享網絡命名空間,包括IP地址和網絡端口。Pod內的容器可以使用localhost相互通信。當Pod中的容器與Pod外部通信時,他們必須協調如何使用共享網絡資源(如端口)。

存儲

Pod可以指定一組共享存儲volumes。Pod中的所有容器都可以訪問共享volumes,允許這些容器共享數據。volumes 還用于Pod中的數據持久化,以防其中一個容器需要重新啟動而丟失數據

Pod也是我們在實際工作中接觸最多的東東,特別是pod的資源清單(對應的yaml文件),我們在后面會詳細介紹

ReplicaSet(rs):是Pod的管理控制組件,監控Pod的健康狀況,保障Pod按照用戶的期望去運行。rs是ReplicationController組件的升級版,增加了標簽選擇器的范圍選擇功能。

Deployment:可管理rs、Pod,實現Pod應用的滾動升級和回滾、擴容和縮容。

Service:是一種可以訪問 Pod邏輯分組的策略, Service通常是通過 Label Selector訪問 Pod組。集群中Pod的數量和訪問地址可能是變化的,這些Pod中的業務應用需要對外提供服務,可通過Service對外提供統一服務地址,Service通過標簽選擇器,匹配一組提供服務的Pod,從而對客戶端隔離了后端Pod的變化。

Pod生命周期

1、pending:pod已經被系統認可了,但是內部的container還沒有創建出來。這里包含調度到node上的時間以及下載鏡像的時間,會持續一小段時間。

2、Running:pod已經與node綁定了(調度成功),而且pod中所有的container已經創建出來,至少有一個容器在運行中,或者容器的進程正在啟動或者重啟狀態。--這里需要注意pod雖然已經Running了,但是內部的container不一定完全可用。因此需要進一步檢測container的狀態。

3、Succeeded:這個狀態很少出現,表明pod中的所有container已經成功的terminated了,而且不會再被拉起了。

4、Failed:pod中的所有容器都被terminated,至少一個container是非正常終止的。(退出的時候返回了一個非0的值或者是被系統直接終止)

5、unknown:由于某些原因pod的狀態獲取不到,有可能是由于通信問題。

一般情況下pod最常見的就是前兩種狀態。而且當Running的時候,需要進一步關注container的狀態。下面就來看下container的狀態有哪些

Pod資源清單定義

apiVersion: v1 #必選,版本號,例如v1

kind: Pod   #必選,資源類型,例如 Pod

metadata:   #必選,元數據

name: string #必選,Pod名稱

namespace: string #Pod所屬的命名空間,默認為"default"

labels:    #自定義標簽列表  

spec: #必選,Pod中容器的詳細定義

containers: #必選,Pod中容器列表

- name: string #必選,容器名稱

image: string #必選,容器的鏡像名稱

imagePullPolicy: [ Always|Never|IfNotPresent ] #獲取鏡像的策略

command: [string] #容器的啟動命令列表,如不指定,使用打包時使用的啟動命令

args: [string] #容器的啟動命令參數列表

workingDir: string #容器的工作目錄

volumeMounts: #掛載到容器內部的存儲卷配置

- name: string #引用pod定義的共享存儲卷的名稱,需用volumes[]部分定義的的卷名

mountPath: string #存儲卷在容器內mount的絕對路徑,應少于512字符

readOnly: boolean #是否為只讀模式

ports: #需要暴露的端口庫號列表

- name: string #端口的名稱

containerPort: int #容器需要監聽的端口號

hostPort: int #容器所在主機需要監聽的端口號,默認與Container相同

protocol: string #端口協議,支持TCP和UDP,默認TCP

env: #容器運行前需設置的環境變量列表

- name: string #環境變量名稱

value: string #環境變量的值

resources: #資源限制和請求的設置

limits: #資源限制的設置

cpu: string #Cpu的限制,單位為core數,將用于docker run --cpu-shares參數

memory: string #內存限制,單位可以為Mib/Gib,將用于docker run --memory參數

requests: #資源請求的設置

cpu: string #Cpu請求,容器啟動的初始可用數量

memory: string #內存請求,容器啟動的初始可用數量

lifecycle: #生命周期鉤子

postStart: #容器啟動后立即執行此鉤子,如果執行失敗,會根據重啟策略進行重啟

preStop: #容器終止前執行此鉤子,無論結果如何,容器都會終止

livenessProbe: #對Pod內各容器健康檢查的設置,當探測無響應幾次后將自動重啟該容器

exec:   #對Pod容器內檢查方式設置為exec方式

command: [string] #exec方式需要制定的命令或腳本

httpGet: #對Pod內個容器健康檢查方法設置為HttpGet,需要制定Path、port

path: string

port: number

host: string

scheme: string

HttpHeaders:

- name: string

value: string

tcpSocket: #對Pod內個容器健康檢查方式設置為tcpSocket方式

port: number

initialDelaySeconds: 0 #容器啟動完成后首次探測的時間,單位為秒

timeoutSeconds: 0    #對容器健康檢查探測等待響應的超時時間,單位秒,默認1秒

periodSeconds: 0    #對容器監控檢查的定期探測時間設置,單位秒,默認10秒一次

successThreshold: 0

failureThreshold: 0

securityContext:

privileged: false

restartPolicy: [Always | Never | OnFailure] #Pod的重啟策略

nodeName: <string> #設置NodeName表示將該Pod調度到指定到名稱的node節點上

nodeSelector: obeject #設置NodeSelector表示將該Pod調度到包含這個label的node上

imagePullSecrets: #Pull鏡像時使用的secret名稱,以key:secretkey格式指定

- name: string

hostNetwork: false #是否使用主機網絡模式,默認為false,如果設置為true,表示使用宿主機網絡

volumes: #在該pod上定義共享存儲卷列表

- name: string #共享存儲卷名稱 (volumes類型有很多種)

emptyDir: {} #類型為emtyDir的存儲卷,與Pod同生命周期的一個臨時目錄。為空值

hostPath: string #類型為hostPath的存儲卷,表示掛載Pod所在宿主機的目錄

path: string    #Pod所在宿主機的目錄,將被用于同期中mount的目錄

secret:    #類型為secret的存儲卷,掛載集群與定義的secret對象到容器內部

scretname: string

items:

- key: string

path: string

configMap: #類型為configMap的存儲卷,掛載預定義的configMap對象到容器內部

name: string

items:

- key: string

path: string

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-08-29 08:21:00

k8sDocker

2022-09-05 17:28:25

k8sNode IPClusterIP

2021-04-12 20:42:50

K8S端口內存

2024-02-28 18:13:00

kubernetes云計算

2024-07-22 13:43:31

Kubernetes容器

2022-03-22 08:52:40

KubernetesCPU內存資源

2022-04-22 13:32:01

K8s容器引擎架構

2023-11-06 07:16:22

WasmK8s模塊

2022-02-11 23:11:09

Kubernetes集群容器化

2023-07-11 07:12:21

Hadoop部署mysql

2023-07-10 07:22:16

2023-06-06 08:14:18

核心Docker應用程序

2021-04-29 08:43:17

k8s可觀測性Metrics

2023-09-06 08:12:04

k8s云原生

2024-01-26 14:35:03

鑒權K8sNode

2023-08-29 10:27:32

2020-05-12 10:20:39

K8s kubernetes中間件

2022-09-05 08:26:29

Kubernetes標簽

2017-09-29 17:20:13

大數據MySQLsqlyog

2023-05-25 21:38:30

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区三区久久久久久久久 | 99久久久99久久国产片鸭王 | 国产精品一区免费 | 国产午夜精品一区二区三区在线观看 | 亚洲九九精品 | 丁香久久| 91亚洲精品国偷拍自产在线观看 | 国产精品99久久久久久宅男 | 国产我和子的乱视频网站 | 国产成人精品综合 | 99久久久国产精品 | 热久久性 | 成人免费观看视频 | 免费视频久久 | 99久久久久 | 一级毛片色一级 | 91亚洲一区| 亚洲电影中文字幕 | 毛片一级电影 | 精品欧美一区二区在线观看欧美熟 | 国产精品久久久久9999鸭 | av影音资源| 国产不卡视频在线 | 狠狠综合网 | 亚洲综合一区二区三区 | 精品中文在线 | 91国产视频在线观看 | 午夜天堂精品久久久久 | 曰批视频在线观看 | 黄色毛片在线看 | 福利av在线 | 久久精品视频在线观看 | 狠狠干天天干 | 亚洲第一成人影院 | 麻豆成人在线视频 | 久久久999免费视频 999久久久久久久久6666 | 亚洲精品女优 | 精品九九 | 欧美日韩亚洲在线 | 一区二区视频免费观看 | 亚洲精品成人 |