日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kubernets的资源管理

發布時間:2023/12/18 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernets的资源管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Kubernets的資源管理

    • 資源
    • yaml
    • namespace
    • Pod
    • Label
    • deployment
    • service
    • 數據存儲
    • EmptyDir
    • HostPath
    • NFS
    • PV

資源

學習kubernets的核心,就是學習如何對集群中的Pod、Pod控制器、Service、存儲等各種資源進行操作。

kubectl api-resources

級別資源名稱縮寫資源作用
集群nodesno集群組成部分
namespacesns隔離pod
pod資源podspo裝載容器
pod資源控制器replication controllersrc控制pod資源
replicasetsrs控制pod資源
deploymentsdeploy控制pod資源
daemonsetsds控制pod資源
jobs控制pod資源
cronjobscj控制pod資源
horizontal pod auto saclershpa控制pod資源
statefulsetssts控制pod資源
服務發現servicessvc統一pod對外接口
ingressing統一pod對外接口
存儲資源volume attachments存儲
persistent volumespv存儲
persistent volume claimspvc存儲
配置資源config mapscm配置
secrets配置

yaml

1 使用kubectl create命令生成yaml文件kubectl create deployment nginx --image=nginx:1.17.1 --dry-run=client -n dev -o yaml kubectl create deployment nginx --image=nginx:1.17.1 --dry-run=client -n dev -o yaml > test.yaml #此種方式適用于沒有真正部署資源 -------- 2 使用kubectl get命令導出yaml文件 kubectl get deployment nginx -n dev -o yaml --export > test2.yaml

namespace

  • Namespace是kubernetes系統中一種非常重要的資源,它的主要作用是用來實現多套系統的資源隔離或者多租戶的資源隔離。
kubectl get namespace kubectl get ns kubectl get ns default -o wide kubectl get ns default -o json kubectl get ns default -o yaml kubectl describe namespace default kubectl create namespace dev kubectl create ns dev kubectl delete ns dev kubectl create -f ns-dev.yaml kubectl delete -f ns-dev.yaml

Pod

  • Pod是kubernetes集群進行管理的最小單元,程序要運行必須部署在容器中,而容器必須存在于Pod中。

  • Pod可以認為是容器的封裝,一個Pod中可以存在一個或多個容器。

kubectl get pods -n kube-system kubectl run (Pod的名稱) [參數]# --image 指定Pod的鏡像# --port 指定端口# --namespace 指定namespace kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace=dev kubectl get pods -n dev kubectl describe pod nginx -n dev kubectl get pods -n dev -o wide kubectl delete pod nginx -n dev

Label

  • Label是kubernetes的一個重要概念。它的作用就是在資源上添加標識,用來對它們進行區分和選擇。

  • Label的特點:

    • 一個Label會以key/value鍵值對的形式附加到各種對象上,如Node、Pod、Service等。
    • 一個資源對象可以定義任意數量的Label,同一個Label也可以被添加到任意數量的資源對象上去。
    • Label通常在資源對象定義時確定,當然也可以在對象創建后動態的添加或刪除。
  • 可以通過Label實現資源的多緯度分組,以便靈活、方便地進行資源分配、調度、配置和部署等管理工作。

一些常用的Label標簽示例如下:

  • 版本標簽:“version”:”release”,”version”:”stable”。。。

  • 環境標簽:“environment”:”dev”,“environment”:”test”,“environment”:”pro”。。。

  • 架構標簽:“tier”:”frontend”,”tier”:”backend”。。。

kubectl label pod xxx key=value [-n 命名空間] kubectl label pod nginx version=1.0 -n dev kubectl label pod xxx key=value [-n 命名空間] --overwrite kubectl label pod nginx version=2.0 -n dev --overwrite kubectl get pod xxx [-n 命名空間] --show-labels kubectl get pod nginx -n dev --show-labels kubectl get pod -l key=value [-n 命名空間] --show-labels kubectl get pod -l version=2.0 -n dev --show-labels kubectl label pod xxx key- [-n 命名空間] kubectl label pod nginx version- -n dev kubectl create -f pod-nginx.yaml kubectl delete -f pod-nginx.yaml

deployment

● 在kubernetes中,Pod是最小的控制單元,但是kubernetes很少直接控制Pod,一般都是通過Pod控制器來完成的。 ● Pod控制器用于Pod的管理,確保Pod資源符合預期的狀態,當Pod的資源出現故障的時候,會嘗試進行重啟或重建Pod。 ● 在kubernetes中Pod控制器的種類有很多,本章節只介紹一種:Deploymentkubectl create deployment xxx [-n 命名空間] kubectl create deployment nginx --image=nginx:1.17.1 -n testkubectl scale deployment xxx [--replicas=正整數] [-n 命名空間] kubectl scale deployment nginx --replicas=4 -n devkubectl create -f deploy-nginx.yaml kubectl delete -f deploy-nginx.yaml kubectl get pods -n dev kubectl get deployment [-n 命名空間] kubectl get deployment -n dev

service

  • Service可以看做是一組同類的Pod對外的訪問接口,借助Service,應用可以方便的實現服務發現和負載均衡。
kubectl expose deployment xxx --name=服務名 --type=ClusterIP --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空間] # 會產生一個CLUSTER-IP,這個就是service的IP,在Service的生命周期內,這個地址是不會變化的 kubectl expose deployment nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n test kubectl get service [-n 命名空間] [-o wide] kubectl get service -n test# 創建集群外部可訪問的Servicekubectl expose deployment xxx --name=服務名 --type=NodePort --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空間] # 會產生一個外部也可以訪問的Service kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n testkubectl get service [-n 命名空間] [-o wide] kubectl get service -n test kubectl delete service xxx [-n 命名空間] kubectl delete service svc-nginx1 -n testkubectl create -f svc-nginx.yaml kubectl delete -f svc-nginx.yaml

數據存儲

  • kubernetes的Volume支持多種類型,比較常見的有下面的幾個:

    • 簡單存儲:EmptyDir、HostPath、NFS。
    • 高級存儲:PV、PVC。
    • 配置存儲:ConfigMap、Secret。

EmptyDir

  • EmptyDir是最基礎的Volume類型,一個EmptyDir就是Host上的一個空目錄。

  • EmptyDir是在Pod被分配到Node時創建的,它的初始內容為空,并且無須指定宿主機上對應的目錄文件,因為kubernetes會自動分配一個目錄,當Pod銷毀時,EmptyDir中的數據也會被永久刪除。

  • EmptyDir的用途如下:

    • 臨時空間,例如用于某些應用程序運行時所需的臨時目錄,且無須永久保留。
    • 一個容器需要從另一個容器中獲取數據的目錄(多容器共享目錄)。
  • 接下來,通過一個容器之間的共享案例來使用描述一個EmptyDir。

  • 在一個Pod中準備兩個容器nginx和busybox,然后聲明一個volume分別掛載到兩個容器的目錄中,然后nginx容器負責向volume中寫日志,busybox中通過命令將日志內容讀到控制臺。

HostPath

  • HostPath就是將Node主機中的一個實際目錄掛載到Pod中,以供容器使用,這樣的設計就可以保證Pod銷毀了,但是數據依舊可以保存在Node主機上。

NFS

PV

  • PV(Persistent Volume)是持久化卷的意思,是對底層的共享存儲的一種抽象。一般情況下PV由kubernetes管理員進行創建和配置,它和底層具體的共享存儲技術有關,并通過插件完成和共享存儲的對接。

  • PVC(Persistent Volume Claim)是持久化卷聲明的意思,是用戶對于存儲需求的一種聲明。換言之,PVC其實就是用戶向kubernetes系統發出的一種資源需求申請。

  • 使用了PV和PVC之后,工作可以得到進一步的提升:

    • 存儲:存儲工程師維護。
    • PV:kubernetes管理員維護。
    • PVC:kubernetes用戶維護。

總結

以上是生活随笔為你收集整理的Kubernets的资源管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。