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

Kubernetes新手完全指南

開(kāi)發(fā) 架構(gòu)
Kubernetes是一個(gè)開(kāi)源的、可擴(kuò)展的容器編排平臺(tái)。Kubernetes允許管理和協(xié)調(diào)跨多個(gè)主機(jī)的容器集群,提供容錯(cuò)和可擴(kuò)展性等服務(wù)。

運(yùn)行應(yīng)用程序通常需要使用服務(wù)器。然而,傳統(tǒng)的服務(wù)器模式存在一些限制,無(wú)法有效定義和強(qiáng)制執(zhí)行應(yīng)用程序的邊界,也無(wú)法確保資源利用的公平性,導(dǎo)致資源利用率低下。

為了克服這些問(wèn)題,虛擬化技術(shù)應(yīng)運(yùn)而生。虛擬化技術(shù)允許在一臺(tái)物理服務(wù)器上創(chuàng)建多個(gè)虛擬機(jī)(VM)。

虛擬機(jī)(VM)是由軟件管理的虛擬化計(jì)算機(jī)系統(tǒng)的實(shí)例,也被稱為hypervisor。每個(gè)虛擬機(jī)都是獨(dú)立且隔離的實(shí)體,擁有自己的虛擬資源。多個(gè)虛擬機(jī)可以共存于同一臺(tái)物理服務(wù)器上,這樣就提高了資源利用率。每個(gè)虛擬機(jī)都是完全隔離的,并且有自己的操作系統(tǒng)。虛擬化技術(shù)有一些限制,其中之一是每臺(tái)物理系統(tǒng)可以承載的虛擬機(jī)數(shù)量的限制。

圖片虛擬機(jī)和容器

與虛擬機(jī)相比,容器提供了一種輕量級(jí)的虛擬化解決方案,因?yàn)樵谕泄芪锢硐到y(tǒng)上運(yùn)行的多個(gè)容器共享操作系統(tǒng)。與虛擬機(jī)類似,每個(gè)容器都有自己的資源集,包括CPU共享,但它與其他容器共享操作系統(tǒng)。Docker是廣泛用于管理容器的容器運(yùn)行時(shí)。

與虛擬機(jī)相比,容器具有多個(gè)優(yōu)點(diǎn),并且被廣泛用于打包應(yīng)用程序。然而,在生產(chǎn)環(huán)境中管理容器并提供容錯(cuò)和負(fù)載均衡等服務(wù)是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。

圖片

這就是Kubernetes發(fā)揮作用的地方。它是一個(gè)開(kāi)源且可擴(kuò)展的容器編排平臺(tái)。該項(xiàng)目由Google于2014年開(kāi)源。它自動(dòng)化容器化應(yīng)用程序的部署、擴(kuò)展和管理。Kubernetes允許管理和協(xié)調(diào)跨多個(gè)主機(jī)的容器集群,提供容錯(cuò)性和可伸縮性等服務(wù)。

注意:Kubernetes通常被稱為K8s,因?yàn)樵凇癒”和“s”之間有八個(gè)字母。

1 架構(gòu)和組件

一個(gè)Kubernetes部署被稱為一個(gè)Kubernetes集群,具有兩種類型的資源:控制平面和節(jié)點(diǎn)。每個(gè)集群都有一個(gè)工作節(jié)點(diǎn)池,在Pod上運(yùn)行容器化應(yīng)用程序,Pod代表一個(gè)或多個(gè)共存的容器。這些節(jié)點(diǎn)由控制平面管理,如下圖所示。在生產(chǎn)環(huán)境中,集群將包含多個(gè)工作節(jié)點(diǎn),控制平面將在多臺(tái)機(jī)器上運(yùn)行,確保高可用性和容錯(cuò)性。

1.1 控制平面組件

控制平面的主要組件如下所述:

  • etcd:這是用于存儲(chǔ)Kubernetes集群數(shù)據(jù)、服務(wù)發(fā)現(xiàn)詳細(xì)信息和API對(duì)象的鍵值存儲(chǔ)。
  • kube-scheduler:它在工作節(jié)點(diǎn)上調(diào)度新創(chuàng)建的Pod。
  • kube-controller-manager:它運(yùn)行控制器進(jìn)程,如處理節(jié)點(diǎn)故障的節(jié)點(diǎn)控制器和作業(yè)控制器。云集成有一個(gè)單獨(dú)的控制器組件。
  • kube-apiserver:Kubernetes API服務(wù)器是集群的主要管理實(shí)體,接收所有REST請(qǐng)求。

Kubernetes架構(gòu)Kubernetes架構(gòu)

1.2 節(jié)點(diǎn)組件

Kubernetes集群中的每個(gè)工作節(jié)點(diǎn)都會(huì)運(yùn)行一些組件。這里選擇了Docker作為容器運(yùn)行時(shí),但Kubernetes還支持其他多種運(yùn)行時(shí)。以下是這些運(yùn)行時(shí)的高級(jí)概述:

  • Kubelet:它管理Pod中的容器,并確保它們運(yùn)行并保持健康狀態(tài)。
  • Kube-proxy:它允許來(lái)自互聯(lián)網(wǎng)或集群內(nèi)部的Pod之間進(jìn)行網(wǎng)絡(luò)通信。

2 關(guān)鍵概念

熟悉一些與Kubernetes相關(guān)的關(guān)鍵概念:

  • Pods:Kubernetes的基本構(gòu)建塊。Pod是Kubernetes中最小的可部署單位,代表一個(gè)或多個(gè)共存的容器。
  • ReplicaSets:確保始終運(yùn)行指定數(shù)量的Pod副本。通常,我們不直接管理ReplicaSets,而是使用高級(jí)概念Deployments。
  • Deployments:一個(gè)更高級(jí)的抽象,用于管理ReplicaSets。Deployments允許我們以聲明方式定義和更新應(yīng)用程序的期望狀態(tài)。
  • Services:同一主機(jī)上的Pod可以與其他Pod進(jìn)行通信。但是,如果我們希望將運(yùn)行在Pod上的應(yīng)用程序暴露給外部世界(或集群內(nèi)部),我們可以使用Service API。Service允許我們抽象出底層的Pod IP,并提供諸如負(fù)載均衡之類的服務(wù)。
  • 命名空間:提供一種邏輯上劃分集群資源的方式,因此,命名空間內(nèi)的資源名稱需要是唯一的。

3 部署示例應(yīng)用程序

本節(jié)將在minikube上部署一個(gè)示例應(yīng)用程序,minikube是一個(gè)本地的Kubernetes集群。開(kāi)發(fā)人員需要遵循minikube網(wǎng)站上提到的步驟,在本地系統(tǒng)上安裝minikube。然后,使用以下命令啟動(dòng)集群:

minikube start

要與Kubernetes集群交互,可以使用kubectl命令行工具使用Kubernetes API對(duì)集群進(jìn)行各種操作。請(qǐng)按照Kubernetes網(wǎng)站上提供的說(shuō)明安裝kubectl CLI。或者,minikube也附帶了kubectl,可以使用minikube kubectl -- [commands]來(lái)訪問(wèn)。本文假設(shè)已經(jīng)安裝了kubectl。

kubectl命令的一般結(jié)構(gòu)是提供要在<resource>上執(zhí)行的<action>。要獲取節(jié)點(diǎn)列表,可以使用以下命令。這里還提供了一些其他常見(jiàn)示例,以幫助開(kāi)發(fā)人員入門。請(qǐng)注意,通過(guò)在命令的末尾添加--help,可以獲取有關(guān)其用法的更多信息。

kubectl get nodes
kubectl get nodes --help

kubectl get pods
kubectl describe pods nginx-pod

3.1 創(chuàng)建一個(gè)Pod

實(shí)際上,這里不會(huì)直接創(chuàng)建Pods,而是使用工作負(fù)載資源(例如Deployments)來(lái)創(chuàng)建它們。不過(guò),為了幫助入門,以下是創(chuàng)建Pod的YAML模板:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:1.25.1
    ports:
    - containerPort: 80

上面顯示的YAML文件更容易理解。將Pod命名為nginx-pod,并指定它包含一個(gè)運(yùn)行nginx的單個(gè)容器。重申一下,Pods是Kubernetes的基本構(gòu)建塊。Pod是Kubernetes中最小的可部署單元,最常見(jiàn)的用例是每個(gè)Pod運(yùn)行一個(gè)單獨(dú)的容器的模型。

kubectl可以以兩種不同的方式使用:命令式或聲明式。在聲明式使用時(shí),提供一個(gè)描述所需狀態(tài)的清單,例如上面顯示的YAML文件,并且kubectl將其提交給集群,確定如何實(shí)現(xiàn)它。另一方面,在命令式使用時(shí),提供特定于集群的命令來(lái)指示kubectl要執(zhí)行的操作。

要?jiǎng)?chuàng)建上述文件中顯示的Pod,請(qǐng)將內(nèi)容保存到名為nginx-pod的文件中,然后使用以下命令運(yùn)行kubectl apply:

kubectl apply -f nginx-pod.yaml 
kubectl get pods

Pod的狀態(tài)從ContainerCreating更改為Running可能需要幾秒鐘的時(shí)間。在READY列中應(yīng)該能夠看到1/1。

第二個(gè)命令獲取Pod列表,如果一切順利,會(huì)在列表中找到Pod。

圖片圖片

至此已經(jīng)在Kubernetes上創(chuàng)建了第一個(gè)Pod!

可以看到Pod正在運(yùn)行一個(gè)監(jiān)聽(tīng)端口80的nginx容器。然而,無(wú)法通過(guò)http://127.0.0.1:80訪問(wèn)它。這是可以理解的,Pod在集群內(nèi)部運(yùn)行,默認(rèn)情況下無(wú)法直接訪問(wèn)。

通常,不會(huì)直接訪問(wèn)Pods,但是為了幫助入門,可以使用kubectl的port-forward功能,它可以在主機(jī)和Pod上指定端口之間建立隧道。

kubectl port-forward nginx-pod 8080:80

運(yùn)行以上命令后,在瀏覽器中瀏覽到http://127.0.0.1:8080,應(yīng)該能夠看到nginx服務(wù)器的歡迎頁(yè)面。按下“Ctrl + C”結(jié)束端口轉(zhuǎn)發(fā)會(huì)話。現(xiàn)在可以刪除這個(gè)Pod,因?yàn)閷⑼ㄟ^(guò)創(chuàng)建Deployments來(lái)管理它們。

kubectl delete pod nginx-pod
kubectl get pods

3.2 創(chuàng)建一個(gè)部署

在前面的部分中,創(chuàng)建了第一個(gè)Pod,但在實(shí)踐中,通常不直接創(chuàng)建Pod,而是使用工作負(fù)載資源,如Deployments。在本部分中,將使用下面的清單創(chuàng)建第一個(gè)Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.25.1
        ports:
        - containerPort: 80

該清單有三個(gè)重要部分。將部署命名為nginx-deployment,然后通過(guò)指定副本數(shù)為2創(chuàng)建一個(gè)ReplicaSet。之前學(xué)到過(guò),ReplicaSets確保指定數(shù)量的Pod副本始終運(yùn)行。部署名稱將指導(dǎo)副本的命名,稍后會(huì)看到。最后,在第12-21行中指定Pods模板。這是一個(gè)示例,重申下通常不直接創(chuàng)建Pods,而是使用更高級(jí)的概念(如Deployments)管理它們。

將清單保存到名為nginx-deployment.yaml的文件中,然后使用以下命令創(chuàng)建一個(gè)部署:

kubectl apply -f nginx-deployment.yaml
kubectl get deployments

如果一切順利,應(yīng)該能夠在列表中看到部署。可以注意到READY列中的2/2與ReplicaSet規(guī)范相匹配。還可以獲取Pod列表來(lái)確認(rèn)這一點(diǎn)。

現(xiàn)在,可以通過(guò)刪除Pods來(lái)測(cè)試部署的可用性,并觀察它如何通過(guò)啟動(dòng)新的Pods自動(dòng)實(shí)現(xiàn)期望的狀態(tài)。需要使用以下命令:

kubectl get pods
kubectl delete pod nginx-deployment-7d6955794c-s8c2h
kubectl get pods

被刪除的Pod的名稱對(duì)您來(lái)說(shuō)可能會(huì)有所不同,但是您會(huì)注意到一旦刪除一個(gè)Pod,就會(huì)實(shí)例化另一個(gè)具有不同名稱的Pod。可以觀察AGE列來(lái)確認(rèn)這種行為。

現(xiàn)在已經(jīng)成功創(chuàng)建了第一個(gè)部署!

3.3 創(chuàng)建一個(gè)服務(wù)

開(kāi)發(fā)人員可以使用服務(wù)API將運(yùn)行在Pods上的應(yīng)用程序暴露給外部世界。服務(wù)允許我們抽象底層的Pod IP,并提供負(fù)載均衡等服務(wù)。通常,可以創(chuàng)建多種類型的服務(wù),并存在許多相關(guān)的用例。可以使用以下命令為部署創(chuàng)建一個(gè)服務(wù):

kubectl expose deployment nginx-deployment --type=LoadBalancer --name=nginx-service --port=80

kubectl expose允許將Kubernetes對(duì)象(在我們的情況下是部署)作為新的Kubernetes服務(wù)暴露出來(lái)。可以在服務(wù)列表中看到新創(chuàng)建的服務(wù),并使用describe命令獲取有關(guān)服務(wù)的更多詳細(xì)信息,如下所示:

kubectl get services
kubectl describe service nginx-service

NodePort字段的值指定了一個(gè)隨機(jī)端口,可以用于訪問(wèn)服務(wù)。由于在本文中使用minikube,可以使用以下命令訪問(wèn)服務(wù):

minikube service nginx-service

這將打開(kāi)nginx的歡迎頁(yè)面。但是,我們不直接訪問(wèn)Pods,可以通過(guò)刪除現(xiàn)有的Pods并重新訪問(wèn)服務(wù)來(lái)確認(rèn)這一行為。

4 總結(jié)

Kubernetes是一個(gè)開(kāi)源的、可擴(kuò)展的容器編排平臺(tái)。Kubernetes允許管理和協(xié)調(diào)跨多個(gè)主機(jī)的容器集群,提供容錯(cuò)和可擴(kuò)展性等服務(wù)。

本文詳細(xì)介紹了Kubernetes的架構(gòu)和組件,結(jié)合了各種關(guān)鍵概念的簡(jiǎn)介。本文提供了一個(gè)實(shí)踐指南,介紹了如何在本地的Kubernetes集群minikube上部署樣例應(yīng)用程序。

責(zé)任編輯:武曉燕 來(lái)源: Java學(xué)研大本營(yíng)
相關(guān)推薦

2020-03-06 16:00:04

KubernetesSpark容器

2022-05-31 10:30:23

KubernetesCalico運(yùn)維

2020-05-20 13:20:45

KubernetesSpark數(shù)據(jù)

2024-06-19 10:14:59

2022-05-16 15:37:32

開(kāi)源軟件

2010-09-16 12:40:04

PPPOE SERVE

2018-11-26 06:22:32

WiFi無(wú)線網(wǎng)絡(luò)路由器

2025-01-13 07:15:00

Monorepo代碼倉(cāng)庫(kù)中項(xiàng)目代碼管理

2022-07-03 13:58:53

YAMLKubernetes容器

2010-06-07 16:10:53

HadoopOnDem

2022-04-08 12:56:52

Linux終端命令

2022-04-19 09:38:20

Kubernetes云原生容器

2015-07-31 10:20:13

Linux命令完全指南

2023-07-09 09:45:25

2010-05-27 10:42:38

SVN配置文檔

2010-07-29 17:11:03

Flex

2010-08-16 15:04:00

DIV入門

2021-03-07 09:05:45

Pytorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2009-11-16 08:58:43

PHP語(yǔ)言

2010-06-21 12:39:56

OSPF路由協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 色免费视频 | 成人不卡在线 | 狠狠婷婷综合久久久久久妖精 | 一区二区电影 | 成年人在线播放 | 欧美日韩国产不卡 | 久久久精品一区 | 久久久久久成人 | 美女三区 | 精品视频一区二区 | 欧美日韩中文字幕 | 久久专区 | 国产成人福利在线观看 | 欧美日韩在线一区二区三区 | 国产精品综合久久 | 欧美精品一区二区三区四区 | 欧美日韩在线播放 | 国产日韩欧美在线观看 | 蜜桃在线视频 | 你懂的国产 | 麻豆changesxxx国产 | 中文字幕一区二区三区精彩视频 | 午夜亚洲 | 国产91在线 | 亚洲 | 一级特黄色毛片 | 欧美一级在线视频 | 欧美日韩精品久久久免费观看 | 午夜激情在线视频 | 激情国产视频 | 另类 综合 日韩 欧美 亚洲 | 亚洲精品日日夜夜 | 亚洲天堂av一区 | 超碰免费在| 国产精品精品视频一区二区三区 | 国产精品天堂 | 91丨九色丨国产在线 | 久综合 | 日韩欧美高清dvd碟片 | 日日碰碰 | 日韩在线观看中文字幕 | 久久久精品 |