k8s常用資源管理 控制

目錄

Pod(容器組):Pod是Kubernetes中最小的部署單元,可以包含一個或多個容器。Pod提供了一種邏輯上的封裝,使得容器可以一起共享網絡和存儲資源

1、創建一個pod

2、pod管理

pod操作

目錄

創建Pod會很慢

Pod(容器組):Pod是Kubernetes中最小的部署單元,可以包含一個或多個容器。Pod提供了一種邏輯上的封裝,使得容器可以一起共享網絡和存儲資源

1、創建一個pod

2、pod管理

pod操作

使用 Kubectl 工具容器資源Kubectl 是管理Kubernetes集群的命令行工具,通過生成的 json 格式傳遞給 API Server 進行創建、查看、管理的操作。使用 kubectl --help 命令可以查看 Kubectl 幫助命令,其中包括基本命令、部署命令、群集管理命令、調試命令以及高級命令等。

創建Podkubectl run 命令可以創建并運行一個或多個Pod,也可以創建一個 deployment 或job 來管理Pod。此命令和 docker run 相類似,也是實現Pod的創建,先從倉庫中拉取基礎鏡像,然后對容器進行操作。

發布服務容器資源創建完成,就需要完成發布工作,確保 Pod 能夠對外提供服務,保證客戶端能夠正常訪問,使用 kubectl expose 命令可以實現該目的。



創建Pod會很慢

Pod(容器組):Pod是Kubernetes中最小的部署單元,可以包含一個或多個容器。Pod提供了一種邏輯上的封裝,使得容器可以一起共享網絡和存儲資源

1、創建一個pod

1)創建yuml文件

[root@k8s-master ~]# mkdir k8s

[root@k8s-master ~]# vim ./k8s/nginx.yaml

piVersion: v1

kind: Pod

metadata:

??name: nginx

??labels:

????app: web

spec:

??containers:

????- name: nginx

??????image: nginx:1.13

??????ports:

????????- containerPort: 80

2)創建容器

方法一. ?yum安裝

[root@k8s-master ~]#yum install *rhsm*

方法二

執行命令:

[root@k8s-master ~]#wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

[root@k8s-master ~]# yum -y install *rhsm*

?[root@k8s-master ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

[root@k8s-master ~]# rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem ?

前兩個命令會生成/etc/rhsm/ca/redhat-uep.pem文件. ?

[root@k8s-master ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

Trying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ...

latest: Pulling from registry.access.redhat.com/rhel7/pod-infrastructure

26e5ed6899db: Downloading 34.95 MB/74.87 MB

66dbe984a319: Download complete

9138e7863e08: Download complete

創建pod

[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml

pod "nginx" created

3)查看所有pod創建運行狀態

[root@k8s-master ~]# kubectl get pod

NAME ?????READY ????STATUS ?????????????RESTARTS ??AGE

nginx ????0/1 ??????ContainerCreating ??0 ?????????17s

4)查看指定pod資源

[root@k8s-master ~]# kubectl get pod nginx

NAME ?????READY ????STATUS ?????????????RESTARTS ??AGE

nginx ????0/1 ??????ContainerCreating ??0 ?????????41s

5)查看pod運行的詳細信息

[root@k8s-master ~]# kubectl describe pod nginx

Name: nginx

Namespace: default

Node: k8s-node2/192.168.50.51

Start Time: Thu, 10 Aug 2023 20:33:09 +0800

Labels: app=web

Status: Pending

IP:

Controllers: <none>

Containers:

??nginx:

????Container ID:

????Image: nginx:1.13

????Image ID:

????Port: 80/TCP

????State: Waiting

??????Reason: ContainerCreating

????Ready: False

????Restart Count: 0

????Volume Mounts: <none>

????Environment Variables: <none>

Conditions:

??Type Status

??Initialized True

??Ready False

??PodScheduled True

No volumes.

QoS Class: BestEffort

Tolerations: <none>

Events:

??FirstSeen LastSeen Count From SubObjectPath Type ReasonMessage

??--------- -------- ----- ---- ------------- -------- -------------

??1m 1m 1 {default-scheduler } Normal Scheduled Successfully assigned nginx to k8s-node2

??25s 25s 1 {kubelet k8s-node2} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""

??1m 4s 3 {kubelet k8s-node2} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request. ?details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"

顯示調度節點 驗證運行的pod

[root@k8s-master ~]# kubectl get pod nginx -o wide

NAME ?????READY ????STATUS ?????????????RESTARTS ??AGE ??????IP ???????NODE

nginx ????0/1 ??????ContainerCreating ??0 ?????????2m ???????<none> ???k8s-node2

2、pod管理

1)刪除pod

[root@k8s-master ~]# kubectl delete pod nginx

pod "nginx" deleted

2)查看刪除pod無法找到

[root@k8s-master ~]# kubectl get pod nginx -o wide

Error from server (NotFound): pods "nginx" not found

3)創建pod

[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml

pod "nginx" created

4)發現最先創建的pod運行在k8s-master節點上,下載鏡像速度太慢沒法運行

[root@k8s-master ~]# kubectl get pod nginx -o wide

NAME ?????READY ????STATUS ?????????????RESTARTS ??AGE ??????IP ???????NODE

nginx ????0/1 ??????ContainerCreating ??0 ?????????38s ??????<none> ???k8s-master

5)訪問pod節點中的服務

[root@k8s-master ~]# kubectl get pod nginx -o wide
NAME????? READY???? STATUS??? RESTARTS?? AGE?????? IP??????????? NODE
nginx???? 1/1?????? Running?? 0????????? 21m?????? 172.16.48.2?? k8s-master


[root@k8s-master ~]# curl -l http://172.16.48.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
??? body {
??????? width: 35em;
??????? margin: 0 auto;
??????? font-family: Tahoma, Verdana, Arial, sans-serif;
??? }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

pod操作

1)在一個pod中修改配置文件運行多個業務容器

[root@k8s-master ~]# vim ./k8s/nginx.yaml

apiVersion: v1
kind: Pod
metadata:
? name: test3
? labels:
??? app: web
spec:
? containers:
??? - name: nginx02
????? image: nginx:1.13
????? ports:
??????? - containerPort: 80
??? - name: busybox
????? image: docker.io/busybox:latest
????? command: ["sleep","3600"]
????? ports:
??????? - containerPort: 80
~????????????????????????????

?2)創建資源

[root@k8s-master ~]#? kubectl create -f ./k8s/nginx.yaml

3)查看資源使用情況??? Pod會 分配了各自的 IP??? 過程會有點慢正常現象

[root@k8s-master ~]#? kubectl get pod -o wide
NAME????? READY???? STATUS????????????? RESTARTS?? AGE?????? IP??????????? NODE
nginx???? 1/1?????? Running???????????? 0????????? 25m?????? 172.16.48.2?? k8s-master
test1???? 0/2?????? ContainerCreating?? 0????????? 9m??????? <none>??????? k8s-node2
test2???? 2/2?????? Running???????????? 0????????? 5m??????? 172.16.48.3?? k8s-master
test3???? 0/2?????? ContainerCreating?? 0????????? 4m??????? <none>??????? k8s-node2

使用 Kubectl 工具容器資源
Kubectl 是管理Kubernetes集群的命令行工具,通過生成的 json 格式傳遞給 API Server 進行創建、查看、管理的操作。
使用 kubectl --help 命令可以查看 Kubectl 幫助命令,其中包括基本命令、部署命令、群集管理命令、調試命令以及高級命令等。

[root@k8s-master ~]# kubectl --help
kubectl controls the Kubernetes cluster manager.

?Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

Basic Commands (Beginner):
? create??????? Create a resource from a file or from stdin.
? expose??????? 使用 replication controller, service, deployment 或者 pod
并暴露它作為一個 新的 Kubernetes Service
? run?????????? 在集群中運行一個指定的鏡像
? set?????????? 為 objects 設置一個指定的特征

Basic Commands (Intermediate):
? explain?????? 查看資源的文檔
? get?????????? 顯示一個或更多 resources
? edit????????? 在服務器上編輯一個資源
? delete??????? Delete resources by filenames, stdin, resources and names, or by resources and label
selector

Deploy Commands:
? rollout?????? Manage the rollout of a resource
? scale???????? Set a new size for a Deployment, ReplicaSet or Replication Controller
? autoscale???? 自動調整一個 Deployment, ReplicaSet, 或者 ReplicationController
的副本數量


創建Pod
kubectl run 命令可以創建并運行一個或多個Pod,也可以創建一個 deployment 或job 來管理Pod。此命令和 docker run 相類似,也是實現Pod的創建,先從倉庫中拉取基礎鏡像,然后對容器進行操作。

通過 kubectl run 命令創建 Nginx 容器, 指定名稱為 nginx-deployment,指定基礎鏡像為 Nginx 目前最新版本,指定對外暴露的端口為 80 以及副本數為 3。Nginx 容器創建完成后使用 get pod 命令查看 Pod 的信息,可以發現確實有 3 個容器資源,并且處于 Running狀態。還可以查看 deployment,也顯示的是 3。

[root@k8s-master ~]#? kubectl run nginx-do --image=nginx:1.14 --port=80 --replicas=2
deployment "nginx-do" created

[root@k8s-master ~]# kubectl get pods
NAME??????????????????????????????? READY?? STATUS??? RESTARTS?? AGE

nginx-do????????? 1/1?????? Running???????????? 0?????????? 1m
nginx-do???? 1/1 ????? Running???????????? 0???????????? 1m

發布服務
容器資源創建完成,就需要完成發布工作,確保 Pod 能夠對外提供服務,保證客戶端能夠正常訪問,使用 kubectl expose 命令可以實現該目的。
?

通過 kubectl expose 命令創建 Service,設置內部通信端口和外部暴露的端口均為 80、名稱為 nginx-service、類型是 NodePort。創建 Service 完后,就可以通過 kubectl get svc命令查看到對外暴露的端口是30464,內部通信的地址是10.254.108.146。

[root@k8s-master ~]#? kubectl expose deployment nginx-do --port=80 --target-port=80 --name=nginx --type=NodePort
service "nginx" exposed

查看

[root@k8s-master ~]# kubectl get pods,svc
NAME??????????????????????????????????? READY?? STATUS??? RESTARTS?? AGE
po/nginx-do-3943939860-d925b????????? 1/1?????? Running???????????? 0?????????? 1m
po/nginx-do-3943939860-fq4zh????? 1/1 ????? Running???????????? 0???????????? 1m

NAME??????????????? CLUSTER-IP?????? EXTERNAL-IP?? PORT(S)??????? AGE
svc/kubernetes????? 10.254.0.1?????? <none>??????? 443/TCP??????? 1d
svc/nginx?????????? 10.254.229.91??? <nodes>?????? 80:30040/TCP?? 38s
svc/nginx-service?? 10.254.108.146?? <nodes>?????? 80:30233/TCP?? 5m

執行 kubectl get endpoints 查看容器自帶的負載均衡。從執行結果可以得知容器自帶的負載均衡分別是 10.254.0.1? 10.254.229.91??? 10.254.108.146?

[root@k8s-master ~]# kubectl get endpoints
NAME??????????? ENDPOINTS??????????? AGE
kubernetes????? 192.168.1.117:6443?? 1d
nginx?????????? 172.16.48.6:80?????? 25m
nginx-service?? 172.16.48.4:80?????? 30m

執行 kubectl get pods 命令時加參數 -o wide 可以查看到 Node 真實節點上的分布。
[root@k8s-master ~]# kubectl get pods -o wide
NAME??????????????????????????????? READY?? STATUS??? RESTARTS?? AGE??? IP?????????? NODE???????? NOMINATED NODE?? READINESS GATES

nginx-do-3943939860-d925b????????? 1/1?????? Running???????????? 0????????? 27m?????? 172.16.48.6?? k8s-master
nginx-do-3943939860-fq4zh????????? 0/1?????? ContainerCreating?? 0????????? 27m?????? <none>??????? k8s-node2
完成上述步驟就已經完成了發布,并且可以進行對其訪問。

?

[root@k8s-master ~]# curl 192.168.50.53:30040
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
??? body {
??????? width: 35em;
??????? margin: 0 auto;
??????? font-family: Tahoma, Verdana, Arial, sans-serif;
??? }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

修改其配置文件

[root@k8s-master ~]# docker exec -it 0a163ad392dc /bin/bash
root@nginx-do-3943939860-d925b:/# cd /usr/share/nginx/html/
root@nginx-do-3943939860-d925b:/usr/share/nginx/html# echo "sdfsdfsdfsd" > index.html

驗證

[root@k8s-master ~]# curl 192.168.50.53:30040
sdfsdfsdfsd

今天先到這里再見

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36287.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36287.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36287.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是事務,并發帶來的事務問題以及事務隔離級別(圖文詳解)

一、什么是事務&#xff1f; 簡單說就是邏輯上的一組操作&#xff0c;要么都執行&#xff0c;要么都不執行。 舉個例子&#xff0c;假如小明要給小紅轉賬100元&#xff0c;這個轉賬會涉及到兩個關鍵操作&#xff1a;①將小明的余額減少100元。 ②將小紅的余額增加100元 。但…

學習筆記整理-JS-04-流程控制語句

文章目錄 一、條件語句1. if語句的基本使用2. if else if多條件分支3. if語句算法題4. switch語句5. 三元運算符 二、循環語句1. for循環語句2. for循環算法題3. while循環語句4. break和continue5. do while語句 三、初識算法1. 什么是算法2. 累加器和累乘器3. 窮舉法4. 綜合算…

給大家推薦一些文本翻譯、文檔翻譯API接口

最近在項目中要接入文本翻譯和文檔翻譯功能&#xff0c;滿足在工作時使用&#xff0c;又需要了解每個人的使用情況&#xff0c;所以采用了集成翻譯API的方式&#xff0c;我再調研時也查了比較多的資料&#xff0c;總結了我感覺比較好的網站。 推薦網站 1、百度翻譯&#xff0…

設計模式(2)工廠方法模式

一、 1、介紹&#xff1a;定義一個用于創建對象的接口&#xff0c;讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。簡單工廠模式的最大優點在于工廠類中包含了必要的邏輯判斷&#xff0c;根據客戶端的選擇條件動態實例化相關的類&#xff0c;對于客戶端來說…

odoo-034 float 浮點數比較

文章目錄 前提問題解決總結 前提 odoo 版本&#xff1a;13 python&#xff1a;3.6.9 問題 比較銷售訂單行中已送貨跟已開票&#xff0c;在 tree 視圖顯示搜索后的結果。發現搜索條件為已送貨 > 已開票時&#xff0c;結果中會包含已送貨已開票的。 解決 把這兩個值打印出…

LeNet中文翻譯

Gradient-Based Learning Applied to Document Recognition 基于梯度的學習應用于文檔識別 摘要 使用反向傳播算法訓練的多層神經網絡構成了成功的基于梯度的學習技術的最佳示例。給定適當的網絡架構&#xff0c;基于梯度的學習算法可用于合成復雜的決策表面&#xff0c;該決策…

【Vue-Router】使用 prams 路由傳參失效

報錯信息&#xff1a; [Vue Router warn]: Discarded invalid param(s) “name”, “price”, “id” when navigating. list.json {"data": [{"name": "面","price":300,"id": 1},{"name": "水",&quo…

node獲取微信小程序登錄用戶的openid

前提準備&#xff1a; 1、需要知道AppID(小程序ID) 2、AppSecret(小程序密鑰) 3、調wx.login成功后返回的code 代碼如下&#xff1a; const express require(express); const router express.Router(); const request require(request) const APP_URL https://api.wei…

考研408 | 【計算機網絡】 網絡層

導圖 網絡層&#xff1a; 路由器功能&#xff1a;轉發&路由選擇 數據平面 數據平面執行的主要功能是根據轉發表進行轉發&#xff0c;這是路由器的本地動作。 控制平面 1.傳統方法/每路由器法&#xff1a; 2.SDN方法&#xff08;Software-Defined Networking) 控制平面中的…

C++并發多線程--多個線程的數據共享和保護

目錄 1--創建并等待多個線程 2--數據共享 2-1--數據只讀 2-2--數據讀寫 2-3--共享數據保護簡單案例 1--創建并等待多個線程 創建多個線程時&#xff0c;可以使用同一個線程入口函數&#xff1b; 多個線程的執行順序與操作系統的調度機制有關&#xff0c;并不和創建線程的先…

html實現商品圖片放大鏡,html圖片放大鏡預覽

效果 實現 復制粘貼&#xff0c;修改圖片路徑即可使用 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>商品圖片放大鏡</title></head><style>body {margin: 0;padding: 0;}#app {padding: 10px;posit…

關于青少年學習演講與口才對未來的領導力的塑造的探析

標題&#xff1a;青少年學習演講與口才對未來領導力的塑造&#xff1a;一項探析 摘要&#xff1a; 本論文旨在探討青少年學習演講與口才對未來領導力的塑造的重要性和影響。通過分析演講和口才對青少年的益處&#xff0c;以及如何培養這些技能來促進領導力的發展&#xff0c;我…

Harmony創建項目ohpm報錯

Harmony創建FA模型的項目時報如下錯&#xff1a; The registry is empty - edit .ohpmrc file or use "ohpm config set registry your_registry" command to set registry.解決方法&#xff1a; File -> Settings -> Build,Execution,Deployment -> Ohpm …

機器學習基礎(五)

決策樹 決策樹是一種預測模型,它代表著對象屬屬性與對象值之間的一種映射關系。樹中的每個節點代表一個對象,分叉路徑(或者叫樹枝)則代表一個屬性值。 決策樹常用方法: 分類樹分析,是一種監督學習,用于預計結果可能為離散類型。 回歸樹分析,用于預計結果為實數。 CART,…

Mysql事務及其隔離機制/隔離級別

mysql事務特性是什么&#xff1f; 原子性(atomicity)&#xff1a;一個事務必須視為一個不可分割的最小工作單元&#xff0c;整個事務中的所有操作要么全部提交成功&#xff0c;要么全部失敗回滾&#xff0c;對于一個事務來說&#xff0c;不可能只執行其中的一部分操作&#xf…

docker可視化工具Portainer

1:Portainer簡介 Portainer是一個docker可視化管理工具&#xff0c;可以非常方便地管理docker鏡像容器。官網地址&#xff1a;https://www.portainer.io/ 注&#xff1a;現在Portainer有BE&#xff08;收費&#xff09;和CE&#xff08;免費&#xff09;版本&#xff0c;安裝的…

【音視頻、chatGpt】h5頁面最小化后,再激活后視頻停住問題的解決

目錄 現象 觀察 解決 現象 頁面有時候要切換&#xff0c;要最小化&#xff1b;短時間或者幾個小時內切換回來&#xff0c;視頻可以正常續上&#xff1b;而放置較長時間&#xff0c;幾個小時或者一晚上&#xff0c;切換回來后&#xff0c;視頻可能卡死 觀察 切換頁面&#x…

【解讀Spikingjelly】使用單層全連接SNN識別MNIST

原文檔&#xff1a;使用單層全連接SNN識別MNIST — spikingjelly alpha 文檔 代碼地址&#xff1a;完整的代碼位于activation_based.examples.lif_fc_mnist.py GitHub - fangwei123456/spikingjelly: SpikingJelly is an open-source deep learning framework for Spiking Neur…

【自用】終端設備(ESP32-S3)連接云服務器 HomeAssistant + MQTT 物聯網平臺

總覽 1.流程概述 2.開始搭建&#xff01; 3. 一、流程概述 0.總體流程 二、開始搭建 1.下載 MQTTX 客戶端&#xff08; 在PC上 &#xff09; https://mqttx.app/zh/downloads 2.新建 MQTTX 連接 0.點擊左側的加號&#xff0c;開始新建連接。 一共需要填寫幾個參數&#…

會玩這 10 個 Linux 命令,一定是個有趣的 IT 男!

Linux當中有很多比較有趣的命令&#xff0c;可以動手看看&#xff0c;很簡單的。 1.rev命令 一行接一行地顛倒所輸入的字符串。 運行&#xff1a; $rev如輸入&#xff1a;shiyanlou shiyanlou2.asciiview命令 1.先安裝aview $sudo apt-get install aview2.再安裝imagema…