国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8s學(xué)習(xí)(二)Kubernetest的資源管理及五大資源介紹

這篇具有很好參考價值的文章主要介紹了K8s學(xué)習(xí)(二)Kubernetest的資源管理及五大資源介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

本文是k8s學(xué)習(xí)系列文章,前后串起來是一個完整的課程(學(xué)習(xí)筆記),本文記錄k8s的資源管理方式及五大類資源的具體管理命令,看完本文基本上就能實現(xiàn)k8s的基本操作,可以獨立部署小型項目了。
前期文章連接:
從零開始搭建kubernetes集群環(huán)境(虛擬機/kubeadm方式)

1.kubernetes的資源管理

k8s學(xué)習(xí)資源,k8s學(xué)習(xí),kubernetes,docker
總結(jié):學(xué)習(xí)kubernetes的核心,就是學(xué)習(xí)如何對集群上的Pod、Pod控制器、Label標(biāo)簽、Service、存儲等各種資源進行操作。

系統(tǒng)資源查看

通過kubectl api-resources命令可以查看系統(tǒng)中所有資源,如下圖,注意資源類型縮寫一列內(nèi)容,本文后續(xù)kubectl命令操作的資源有的用縮寫名,跟用全名一樣的。
k8s學(xué)習(xí)資源,k8s學(xué)習(xí),kubernetes,docker

2.資源管理方式

  1. 命令式對象管理:直接使用命令去操作kubernetes資源

kubectl命令的語法如下:kubectl [命令] [資源類型] [資源名稱] [參數(shù)]
kubectl run nginx-pod --image=nginx:1.17.1 --port=80
命令有很多,老規(guī)矩,查看幫助吧 kubectl--help

  1. 命令式對象配置:通過命令配置和配置文件去操作kubernetes資源
    kubectl create/patch -f nginx-pod.yaml
    nginx-pod.yaml是指定的配置文件,具體內(nèi)容后面實戰(zhàn)部分會有,莫急
  2. 聲明式對象配置:通過apply命令和配置文件去操作kubernetes資源
    kubectl apply -f nginx-pod.yaml

問題:乍一看好像后兩種方式不好區(qū)分,同樣是創(chuàng)建一個k8s資源,使用 kubectl create 和使用 kubectl apply有什么區(qū)別呢?
區(qū)別有兩點:
(1)kubectl create命令可創(chuàng)建新資源。 因此,如果再次運行該命令,則會拋出錯誤,因為資源名稱在名稱空間中是唯一的。
(2)kubectl apply命令將配置應(yīng)用于資源。 如果資源不在那里,那么它將被創(chuàng)建。 kubectl apply命令可以第二次運行,如果資源存在就執(zhí)行更新,相當(dāng)于kubectl patch操作

以上三種資源管理方式,命令式對象管理直接操作資源對象,適用于測試環(huán)境,操作簡單,但是只能操作活動對象且難以審計、跟蹤;命令式對象配置操作對應(yīng)配置文件,可以審計跟蹤,但是項目較大時配置文件管理麻煩;聲明式對象配置支持目錄操作,但是意外情況下不好調(diào)式。
(沒關(guān)系,這里只是學(xué)習(xí)原理,生產(chǎn)環(huán)境還是界面管理工具的,比如我公司用的kuboard)

3.資源管理實戰(zhàn)

3.1 Namespace

k8s系統(tǒng)中Namespace資源是用了實現(xiàn)多套環(huán)境的資源隔離或者多租戶的資源隔離。默認情況下k8s集群中所有Pod資源都是可以相互訪問的,但是實際中如果不想讓兩個Pod之間相互干擾可以將兩個Pod劃分到不同的namespace下。
k8s通過將集群內(nèi)部的資源分配到不用的namespace中,形成邏輯上的“組”,方便不同組的資源可以隔離使用和管理。如果將不同的Namespace交給不同租戶進行管理,這樣就實現(xiàn)了多租戶的資源隔離。此時還能結(jié)合kubernetes的資源配額機制,限定不同租戶能占用的資源,例如CPU使用量、內(nèi)存使用量等等,來實現(xiàn)租戶可用資源的管理。

kubernetes在集群啟動之后,會默認創(chuàng)建幾個namespace,查看命令如下圖所示:k8s學(xué)習(xí)資源,k8s學(xué)習(xí),kubernetes,docker

  • 命令式對象管理,命令示例如下:
kubectl get namespace   #查看所有的命名空間,同kubectl get ns
kubectl get namespace default  #查看指定的命名空間default
kubectl get ns default -o wide #指定命名空間的輸出格式,還有-o json,-o yaml格式
kubectl describe namespace default #查看default命名空間的詳情
kubectl create namespace dev  #創(chuàng)建命名空間
kubectl delete ns dev    #刪除命名空間
  • 命令式對象配置方式如下:

新建ns-dev.yaml配置文件,內(nèi)容如下:

apiVersion: v1
kind: Namespace
metadata:
  name: dev

通過命令式對象配置進行創(chuàng)建和刪除

kubectl create -f ns-dev.yaml
kubectl delete -f ns-dev.yaml

3.2 Pod

Pod是kubernetes集群進行管理的最小單元,可以認為是容器的封裝,一個Pod中可以存在一個或者多個容器。kubernetes在集群啟動之后,集群中的各個組件也是以Pod方式運行的,可以通過下面的命令查看:
k8s學(xué)習(xí)資源,k8s學(xué)習(xí),kubernetes,docker

  • 命令式對象管理,應(yīng)用示例如下:
kubectl run (Pod的名稱) [參數(shù)]   #創(chuàng)建并運行Pod,如kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace=dev
# --image 指定Pod的鏡像
# --port 指定端口
# --namespace 指定namespace
kubectl get pods -n dev  #查詢名稱為dev的namespace下的所有Pod的基本信息
kubectl describe pod nginx -n dev #查看名稱為dev的namespace下的Pod的名稱為nginx的詳細信息
kubectl get pods [-n dev] -o wide  #可以查詢到Pod的IP
curl 10.244.2.7:80    #訪問Nginx的Pod,ip每次都先查詢一下,可能發(fā)生變化
kubectl delete pod nginx -n dev #刪除Nginx的Pod
  • 命令式對象配置方式只是配置文件內(nèi)容不一樣,命令是相同的,不在列舉(搜可得,后續(xù)詳情文章會詳解):

3.3 Label

Label的作用就是在資源上添加標(biāo)識,用來對它們進行區(qū)分和選擇。通過Label可以實現(xiàn)資源的多緯度分組,以便靈活、方便地進行資源分配、調(diào)度、配置和部署等管理工作。

Label的特點:

  • 一個Label會以key/value鍵值對的形式附加到各種對象上,如Node、Pod、Service等。
  • 一個資源對象可以定義任意數(shù)量的Label,同一個Label也可以被添加到任意數(shù)量的資源對象上去。
  • Label通常在資源對象定義時確定,也可以在對象創(chuàng)建后動態(tài)的添加或刪除。

一些常用的Label標(biāo)簽示例如下:
● 版本標(biāo)簽:“version”:”release”,”version”:”stable”。。。
● 環(huán)境標(biāo)簽:“environment”:”dev”,“environment”:”test”,“environment”:”pro”
● 架構(gòu)標(biāo)簽:“tier”:”frontend”,”tier”:”backend”。。。

標(biāo)簽定義完畢之后,還要考慮到如何通過標(biāo)簽選擇所需資源,這就要用到Label Selector,當(dāng)前有兩種篩選方式:

  1. 基于等式的Label Selector,比如name=slave或者env!=production。
  2. 基于集合的Label Selector,比如name in (master,slave)或者name not in (master,slave)

注意:
標(biāo)簽等號后面的值加不加引號都行; 標(biāo)簽的選擇條件可以使用多個,此時將多個Label Selector進行組合,使用逗號(,)進行分隔即可

語法及應(yīng)用示例

kubectl label pod nginx version=1.0 -n dev  #為名稱Nginx的Pod資源打上標(biāo)簽version=1.0
kubectl label pod xxx key=value [-n 命名空間] --overwrite #如果標(biāo)簽key已經(jīng)存在,加--overwrite參數(shù)更新資源的標(biāo)簽
kubectl get pod nginx -n dev --show-labels  #顯示Nginx的Pod的標(biāo)簽
kubectl get pod -l version=2.0 -n dev --show-labels #篩選版本號是2.0的在名稱為dev的namespace下的Pod
kubectl label pod xxx key- [-n 命名空間] #刪除標(biāo)簽 key減號

3.4 Deployment

在kubernetes中,Pod是最小的控制單元,但是kubernetes很少直接控制Pod,一般都是通過Pod控制器來完成的。Deployment是一種Pod控制器,用于Pod的管理,確保Pod資源符合預(yù)期的狀態(tài),當(dāng)Pod的資源出現(xiàn)故障的時候,會嘗試進行重啟或重建Pod。
在kubernetes中Pod控制器的種類有很多,本章節(jié)只介紹一種:Deployment。

語法及應(yīng)用示例

kubectl create deployment nginx --image=nginx:1.17.1 -n dev #為e名稱Nginx的Pod資源打上標(biāo)簽version=1.0
kubectl scale deployment nginx --replicas=4 -n dev #在名稱為test的命名空間下根據(jù)名為nginx的deployment創(chuàng)建3個Pod
kubectl get deployment -n dev  #查看名稱為dev的namespace下的deployment信息
kubectl describe deployment nginx -n dev  #查看deployment的詳細信息
kubectl delete deployment nginx -n dev  #刪除名為nginx的deployment

小知識1:kubectl run nginx --image=nginx --replicas=2 --port=80,創(chuàng)建一個名稱為nginx的deployment, 新版本可能會反饋Flag --replicas has been deprecated, has no effect and will be removed in the future,并且只會創(chuàng)建一個Nginx容器實例。
小知識2:kubectl run nginx --image=nginx --replicas=2 --port=80,創(chuàng)建一個名稱為nginx的deployment這個deployment中默認生成了對應(yīng)的pod資源,如果刪除其中的Pod,這個deployment會嘗試創(chuàng)建一個新的Pod,這個特性也在新版本刪除了,直接刪除Pod就能刪除成功了。

3.5 Service

kubernetes設(shè)計了Service來解決外部環(huán)境訪問容器資源的問題。Pod資源可以提供具有高可用性的服務(wù),雖然每個Pod都會分配一個單獨的IP地址,但Pod的IP會隨著Pod的重建產(chǎn)生變化,且Pod的IP僅僅是集群內(nèi)部可見的虛擬的IP,外部無法訪問。
Service可以看做是一組同類的Pod對外的訪問接口,借助Service,應(yīng)用可以方便的實現(xiàn)服務(wù)發(fā)現(xiàn)和負載均衡。
k8s學(xué)習(xí)資源,k8s學(xué)習(xí),kubernetes,docker

3.5.1創(chuàng)建集群內(nèi)部可訪問的Service

語法:

kubectl expose deployment xxx --name=服務(wù)名 --type=ClusterIP --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空間]
#–type=ClusterIP會產(chǎn)生一個CLUSTER-IP,這個就是service的IP,在Service的生命周期內(nèi),這個地址是不會變化的

#暴露名為dev的namespace下的名為nginx的deployment,并設(shè)置服務(wù)名為svc-nginx
kubectl expose deployment nginx --name=svc-nginx --type=ClusterIP --port=80 --target-port=80 -n dev
#訪問service的80端口,轉(zhuǎn)發(fā)到Pod的80端口

kubectl get service -n dev #查看名為dev的命名空間的所有Service
curl ip:80  #在集群內(nèi)通過master節(jié)點ip可以訪問部署的nginx服務(wù)

3.5.2創(chuàng)建集群外部可訪問的Service

語法:

kubectl expose deployment xxx --name=服務(wù)名 --type=NodePort --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空間]
#–type=NodePort參數(shù)會產(chǎn)生一個外部也可以訪問的Service,

#例:暴露名為test的namespace下的名為nginx的deployment,并設(shè)置服務(wù)名為svc-nginx-1
kubectl expose deploy nginx --name=svc-nginx-1 --type=NodePort --port=80 --target-port=80 -n dev

此時外部環(huán)境可以通過master節(jié)點IP進行訪問了,端口查詢方法如下圖:

k8s學(xué)習(xí)資源,k8s學(xué)習(xí),kubernetes,docker
總結(jié):以上就是kubernetes的Namespace/Pod/Deployment/Service資源的基本操作,學(xué)會這些操作就可以在集群中實現(xiàn)一個服務(wù)的簡單部署和訪問了。但是如果想更好的使用k8s,接下來需要深入學(xué)習(xí)這幾種資源的細節(jié)和原理。文章來源地址http://www.zghlxwxcb.cn/news/detail-795392.html

到了這里,關(guān)于K8s學(xué)習(xí)(二)Kubernetest的資源管理及五大資源介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • K8s-資源管理(二)

    K8s-資源管理(二)

    2. 資源管理 2.1 資源管理介紹 在kubernetes中,所有的內(nèi)容都抽象為資源,用戶需要通過操作資源來管理kubernetes。 kubernetes的本質(zhì)上就是一個集群系統(tǒng),用戶可以在集群中部署各種服務(wù),所謂的部署服務(wù),其實就是在kubernetes集群中運行一個個的容器,并將指定的程序跑在容器中

    2024年02月15日
    瀏覽(22)
  • k8s配置資源管理

    k8s配置資源管理

    Secret Configmap Secret :保存密碼,token,敏感的k8s資源 這類數(shù)據(jù)可以存放在鏡像當(dāng)中,但是防止secret當(dāng)中可以更方便控制,減少暴露的風(fēng)險 保存加密的信息 Docker-registry: 存儲docker倉庫認證信息,以及docker組件認證成功(私有) Generic: 是secret的默認模式,opaque base64加密編碼的

    2024年01月21日
    瀏覽(30)
  • k8s- 配置資源管理

    配置資源管理 //Secret Secret 是用來保存密碼、token、密鑰等敏感數(shù)據(jù)的 k8s 資源,這類數(shù)據(jù)雖然也可以存放在 Pod 或者鏡像中,但是放在 Secret 中是為了更方便的控制如何使用數(shù)據(jù),并減少暴露的風(fēng)險。 Secret 有四種類型:? ●kubernetes.io/service-account-token:由 Kubernetes 自動創(chuàng)建,

    2024年02月16日
    瀏覽(30)
  • k8s---配置資源管理

    k8s---配置資源管理

    目錄 內(nèi)容預(yù)知 secret資源配置 secert的幾種模式 pod如何來引用secret 陳述式創(chuàng)建secret 聲明式+base64編碼配置secret 將secret用vlumes的方式掛載到pod中 傳參的方式將環(huán)境變量導(dǎo)入pod 如何通過secret加密方式獲取倉庫密碼 configmap的資源配置 陳述式創(chuàng)建configmap資源配置 聲明式配置configma

    2024年01月21日
    瀏覽(65)
  • k8s 資源管理方式

    k8s中資源管理方式可以劃分為下面的幾種:命令式對象管理、命令式對象配置、聲明式對象配置。 命令式對象管理 命令式對象管理:直接使用命令的方式來操作k8s資源, 這種方式操作簡單,但是無法審計和追蹤。 命令式對象配置 通過命令和配置文件來操作k8s資源,這種方式

    2024年02月07日
    瀏覽(27)
  • k8s的配置資源管理

    Secret用來保存密碼、token密鑰以及一些敏感的k8s資源。這類數(shù)據(jù)雖然可以存放在鏡像當(dāng)中,但是放在secret當(dāng)中可以更方便控制。減少暴露的風(fēng)險。 Secret的作用:保存加密的信息 docker-registry()主要用于存儲docker倉庫的認證信息,以及docker組件認證信息。(私有) generic(jienairuike)是

    2024年01月17日
    瀏覽(23)
  • yum部署kubernetes(k8s)集群、k8s常用資源管理

    目錄 一、環(huán)境搭建 1、準(zhǔn)備環(huán)境 1)計算機說明,建議系統(tǒng)版本7.4或者7.6 2)修改所有主機的計算機名設(shè)置host文件 ?2、安裝master節(jié)點 1)安裝etcd配置etcd 2)安裝k8s-master節(jié)點 3)配置apiserver 4)配置controller和scheduler 5)啟動k8s服務(wù) 3、安裝k8s-master上的node 1)安裝node 2)配置kube

    2024年02月13日
    瀏覽(35)
  • k8s的陳述式資源管理

    k8s的陳述式資源管理

    命令行:kubectl命令行工具 優(yōu)點:90%以上的場景都可以滿足 對資源的增,刪,查比較方便,對改不是很友好 缺點: 命令比較冗長,復(fù)雜,難記 聲明式: k8s當(dāng)中的yaml文件來實現(xiàn)資源管理------聲明式 GUI:圖形化工具的管理。 1、kubectl命令的詳解? ? 查看? ?? ?部署? ? ? 查看

    2024年02月04日
    瀏覽(17)
  • (kubernetes)k8s常用資源管理

    (kubernetes)k8s常用資源管理

    目錄 k8s常用資源管理 1、創(chuàng)建一個pod 1)創(chuàng)建yuml文件 2)創(chuàng)建容器 3)查看所有pod創(chuàng)建運行狀態(tài) 4)查看指定pod資源 5)查看pod運行的詳細信息 6)驗證運行的pod 2、pod管理 1)刪除pod 2)查看刪除pod無法找到 3)創(chuàng)建pod 4)發(fā)現(xiàn)最先創(chuàng)建的pod運行在k8s-master節(jié)點上,下載鏡像速度太

    2024年02月13日
    瀏覽(52)
  • k8s陳述式資源管理方法

    1.kubernetes 集群管理集群資源的唯一入口是通過相應(yīng)的方法調(diào)用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具,用于與 apiserver 進行通信,將用戶在命令行輸入的命令,組織并轉(zhuǎn)化為 apiserver 能識別的信息,進而實現(xiàn)管理 k8s 各種資源的一種有效途徑 3.kubectl 的命令大全 kubectl

    2024年02月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包