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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2.基础资源管理

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

一、資源的管理方式

1.命令式對象管理

直接使用命令行去操作K8S資源

Kubectl run nginx-pod --image=nginx-1.17.1 --port=80

2.命令式對象配置

通過命令配置和配置文件去操作K8S資源。命令可以式增刪改查

kubctl create/patch -f nginx-pod.yaml

3.聲明式對象配置

kubctl apply -f nginx-pod.yamlapply:如果pod存在就更新如果pod不存在就創建聲明式對象配置只有apply一個命令,并且只能新增和更新pod 類型操作對象使用環境優點缺點
命令式對象管理對象測試簡單只能操作活動對象,無法審計、跟蹤
命令式對象配置文件開發可以審計、跟蹤項目大時,配置文件多,操作麻煩
聲明式對象配置目錄開發支持目錄操作意外情況下難以調試

二、命令式對象管理

kubctl是K8S集群的命令行工具,通過kubctl能對集群本身進行管理,并能夠在集群上進行容器化應用的安裝部署,查看幫助信息

kubctl --help kubctl 命令 ——help

1.語法

kubctl [command] [type] [name] [flags]

(1)command:指定要對資源執行的操作,例如 create、get、describe 和 delete
(2)type:指定資源類型,資源類型是大小寫敏感的,開發者能夠以單數、復數和縮略的 形式。例如:
(3)name:指定資源的名稱,名稱也大小寫敏感的。如果省略名稱,則會顯示所有的資源.
(4)flags:指定可選的參數。例如,可用-s 或者–server 參數指定 Kubernetes API server 的地址和端口。

2.常用操作

命令分類命令作用
基本命令create創建一個資源
edit編輯一個資源
get獲取一個資源
patch更新一個資源
delete刪除一個資源
explain展示資源文檔
運行和調試run在集群中運行一個指定的鏡像
expose暴漏資源為service
describe顯示資源內部信息
logs輸出容器在pod中的日志
attach進入運行中的容器
exec執行容器中的一個命令
cp在Pod內外復制文件
rollout管理資源的發布
scale擴容pod的數量
autoscale自動調整pod的數量
高級命令apply通過文件對資源進行配置
label更新資源上的標簽
其它命令cluseter-info顯示集群信息
version顯示當前server和client的版本

簡單的演示

#查看所有podkubctl get pod#查看某個podkubctl get pod pod的名字#查看命名空間kubectl get ns#查看K8S中支持的所有資源kubectl api-resources

3.實例

3.1 創建一個命名空間(namespace)

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl create ns pangbb namespace/pangbb created#查看創建好的命名空間 [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get ns |grep pangbb pangbb Active 65s

3.2 在指定的命名空間下創建一個nginx pod

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl run pangbb-nginx --image=nginx -n pangbb pod/pangbb-nginx created#查看pangbb命名空間下 名字為pangbb-nginx的pod [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod -n pangbb NAME READY STATUS RESTARTS AGE pangbb-nginx 1/1 Running 0 51s

3.3 刪除pod

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl delete pod pangbb-nginx -n pangbb pod "pangbb-nginx" deleted

3.4 刪除命名空間

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl delete ns pangbb namespace "pangbb" deleted

三、命名空間

命名空間的作用主要是用來實現"多套環境的資源隔離"或者"多租戶的資源隔離"

1.集群默認的命名空間

#K8S集群創建好有默認的4個命名空間 [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get ns NAME STATUS AGE default Active 385d 所有沒有指定空間的pod都會被分配到這個默認的空間中 kube-node-lease Active 385d 集群節點之間的心態維護 kube-public Active 385d 此命名空間下的資源可以被所有人訪問 kube-system Active 385d K8S系統創建的資源都在這個命名空間

2.查看某個命名空間

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get ns mall500 NAME STATUS AGE mall500 Active 361d

3.管理命名空間

3.1 創建命名空間

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl create ns zhangsan namespace/zhangsan created [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get ns zhangsan NAME STATUS AGE zhangsan Active 7s

3.2 刪除命名空間

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl delete ns zhangsan namespace "zhangsan" deleted [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get ns zhangsan Error from server (NotFound): namespaces "zhangsan" not found

3.3 使用yaml文件管理命名空間

[root@t3-tkhijbs-jcsszy-app09 ymal]# cat test.yaml apiVersion: v1 kind: Namespace metadata:name: zhangsan[root@t3-tkhijbs-jcsszy-app09 ymal]# kubectl apply -f test.yaml namespace/zhangsan created[root@t3-tkhijbs-jcsszy-app09 ymal]# kubectl get ns zhangsan NAME STATUS AGE zhangsan Active 52s #利用yaml文件刪除命名空間 [root@t3-tkhijbs-jcsszy-app09 ymal]# kubectl delete -f test.yaml namespace "zhangsan" deleted[root@t3-tkhijbs-jcsszy-app09 ymal]# kubectl get ns |grep zhangsan

四、pod

1.創建并運行pod

基本格式:

kubectl run pod的名字 --image=pod使用的鏡像名稱 --port=端口 --namespace=命名空間

創建一個pod

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl run nginx01 --image=nginx --port=80 pod/nginx01 created

查看pod信息

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod nginx01 NAME READY STATUS RESTARTS AGE nginx01 1/1 Running 0 2m48s#查看額外的信息 [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod nginx01 -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx01 1/1 Running 0 6m48s 10.244.2.85 node03 <none> <none>

查看pod的詳細信息

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl describe pod nginx01

2.訪問pod

查看pod的IP地址

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod nginx01 -o wide |awk '{print $6}' IP 10.244.2.85

根據pod的IP地址訪問pod

[root@t3-tkhijbs-jcsszy-app09 ~]# curl -I 10.244.2.85 HTTP/1.1 200 OK Server: nginx/1.21.6 Date: Thu, 03 Feb 2022 07:54:23 GMT Content-Type: text/html Content-Length: 615 Last-Modified: Tue, 25 Jan 2022 15:03:52 GMT Connection: keep-alive ETag: "61f01158-267" Accept-Ranges: bytes

3.刪除pod

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl delete pod nginx01 pod "nginx01" deleted

五、Label

它的作用就是在資源上添加標識,用來對他們進行區分和選擇

創建一個測試pod

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl run nginx01 --image=nginx --port=80 pod/nginx01 created

1.查看某個pod的label

#這里有個默認的標簽: run=nginx01 [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod nginx01 --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx01 1/1 Running 0 117s run=nginx01

2.在命令行給pod打標簽

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl label pod nginx01 version=1.0 pod/nginx01 labeled[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod nginx01 --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx01 1/1 Running 0 8m run=nginx01,version=1.0

3.更新標簽

–overwrite

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl label pod nginx01 version=2.0 --overwrite pod/nginx01 labeled [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod nginx01 --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx01 1/1 Running 0 10m run=nginx01,version=2.0

4.根據標簽篩選pod

-l: -l參數根據標簽進行篩選

#這里有兩個不同的pod 并且標簽不同 [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx01 1/1 Running 0 12m run=nginx01,version=2.0 nginx02 1/1 Running 0 47s run=nginx02,version=1.0 [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pods -l version=1.0 --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx02 1/1 Running 0 2m58s run=nginx02,version=1.0

5.刪除標簽

刪除標簽就是在標簽的后邊加一個"減號"

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod nginx01 --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx01 1/1 Running 0 17m run=nginx01,version=2.0#刪除了version標簽 [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl label pod nginx01 version- pod/nginx01 labeled[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod nginx01 --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx01 1/1 Running 0 18m run=nginx01

六、控制器deployment

pod控制器用于pod管理,確保pod資源符合預期的狀態,當pod的資源出現故障時,會嘗試進行重啟或重建pod
deployment只是眾多控制器中的一種

--replicas參數將會被棄用。所以不在建議在命令行使用

使用yaml文件創建deployment控制器

[root@t3-tkhijbs-jcsszy-app09 yaml]# cat nginx-pod.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-testlabels:app: nginxspec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginx-containerimage: nginxports:- containerPort: 80protocol: TCP [root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl apply -f nginx-pod.yaml deployment.apps/nginx-test created [root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-test-574b9fcb9-2xg27 1/1 Running 0 89s nginx-test-574b9fcb9-5ktdp 1/1 Running 0 89s

七、service

先看一個例子:

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP nginx-test-96577bc6d-9ztgc 1/1 Running 0 7m55s 10.244.2.95 nginx-test-96577bc6d-q8zz4 1/1 Running 0 7m55s 10.244.2.94

刪除第一個pod

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl delete pod nginx-test-96577bc6d-9ztgc

由于控制器會自動在創建新的pod,也會給新的pod新的IP地址.如下:2.95變成了96

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP nginx-test-96577bc6d-gvv4n 1/1 Running 0 37s 10.244.2.96 nginx-test-96577bc6d-q8zz4 1/1 Running 0 10m 10.244.2.94

雖然每一個pod都會分配一個單獨的IP,然而卻有以下問題:
pod ip 會隨著pod的重建產生變化
pod ip 僅僅是集群內可見的虛擬IP,外部無法訪問

此時service就解決了這個問題。
service可以看作是一組同類pod對外的訪問接口。借助service,應用可以方便的實現服務發現和負載均衡

1.集群IP

這種類型的service只能適用于集群內部訪問,不在K8S集群中是訪問不到的

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl expose deployment nginx-test \ --name=svc-nginx --type=ClusterIP --port=80 --target-port=80 #顯示結果如下: service/svc-nginx exposed#查看服務 [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get svc |grep nginx svc-nginx ClusterIP 10.0.0.47 <none> 80/TCP #訪問集群IP curl 10.0.0.47

2.nodeport

這種類型的service集群外部也可以訪問

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl expose deployment nginx-test \ > --name=svc-nginx --type=NodePort --port=80 --target-port=80[root@t3-tkhijbs-jcsszy-app09 ~]# [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get svc |grep nginx svc-nginx NodePort 10.0.0.238 <none> 80:32383/TCP

3.刪除service

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl delete svc svc-nginx service "svc-nginx" deleted

總結

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

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