03.k8s常用的資源

3.k8s常用的資源

3.1 創建pod資源

k8s yaml的主要組成

apiVersion: v1  api版本
kind: pod   資源類型
metadata:   屬性
spec:       詳細

上傳nginx鏡像文件,并且上傳私有倉庫里面
在這里插入圖片描述

k8s_pod.yaml
apiVersion: v1
kind: Pod
metadata:name: nginxlabels:app: web
spec:containers:- name: nginximage: 192.168.111.11:5000/nginx:1.13ports:- containerPort: 80

指定文件創建pod

#指定文件創建pod
kubectl create -f k8s_pod.yaml
#查看pod類型的nginx服務運行狀態
kubectl get pod nginx -o wide
#pod類型的nginx服務的詳細信息
kubectl describe pod nginx

可以看到nodeIP地址和一個容器IP地址,從本地私有倉庫pull的鏡像文件
在這里插入圖片描述

nginx詳細信息
在這里插入圖片描述

下圖可以看到容器ID與上圖nginx服務信息顯示一致,創建并啟動容器
注釋:啟動一個pod下圖會起兩個容器,
在這里插入圖片描述

下圖可以看到pod容器有IP地址,nginx容器沒有IP地址

docker inspect 8405c6ebc78a |tail -20

在這里插入圖片描述

nginx容器詳細信息

docker inspect 731c1535d85e |tail -20

在這里插入圖片描述

nginx沒有IP地址,是因為網絡類型為Container:一個容器與另一個運行中的容器共享網絡,也就是nginx容器共享pod容器網絡;
注釋:使用pod也就是為了實現k8s的核心功能,單單考簡單的容器無法實現k8s核心功能。
在這里插入圖片描述

一個pod資源:至少由兩個容器組成,pod基礎容器和業務容器組成
舉例子:pod配置文件2,一個pod資源多個業務容器:

apiVersion: v1
kind: Pod
metadata:name: testlabels:app: web
spec:containers:- name: nginximage: 192.168.111.11:5000/nginx:1.13ports:- containerPort: 80- name: busyboximage: 192.168.111.11:5000/busybox:latestcommand: ["sleep","10000"]

創建一個pod兩個業務容器
在這里插入圖片描述

在192.168.111.13的宿主機上可以看到3個容器,兩個業務容器公用pod容器網絡,也就是3個容器使用一個IP地址;
業務容器端口分配方式:端口誰先占誰先得。
在這里插入圖片描述

pod是k8s最小的資源單位

3.2 ReplicationController資源

rc:保證指定數量的pod始終存活,rc通過標簽選擇器(selector)來關聯pod
rc即:ReplicationController:副本控制器:功能就是起多個相同的pod,而且保證pod數量,多了就刪除,少了就增加
在這里插入圖片描述

k8s資源的常見操作:
#指定文件創建yaml
kubectl   create  -f   xxx.yaml
#查看pod和rc資源列表
kubectl   get  pod|rc
#查看pod類型nginx服務的詳情信息
kubectl  describe  pod  nginx
#刪除pod資源nginx服務
kubectl  delete   pod  nginx   或者kubectl delete  -f  xxx.yaml
#編輯修改資源配置文件
kubectl  edit  pod   nginx

創建一個rc

apiVersion: v1
kind: ReplicationController
metadata:name: nginx
spec:replicas: 5 #自動創建pod,為5個podselector:    #標簽選擇器,根據pod標簽識別,哪些pod是我的,如果多了,我就要干掉年輕的app: mywebtemplate:    #給pod定義模板,便于創建podmetadata:    #從改行以下就是pod配置文件一致的,多個pod不能設置一樣的name,隨機生產labels:    #標簽,與rc標簽選擇器一致,否側該pod不屬于rcapp: mywebspec:containers:- name: mywebimage: 192.168.111.11:5000/nginx:1.13ports:- containerPort: 80

查看同一瞬間起一個rc和5個pod,并且分配宿主機均衡,
rc的名字為nginx,5個pod都是根據rc的名字后面接隨機組成的名字
在這里插入圖片描述

測試刪除一個pod,rc會自動有創建出一個pod
在這里插入圖片描述

測試刪除一個node192.168.111.13節點,rc會將pod轉移到12上自動創建pod,始終保持5個pod,就是這么倔
在這里插入圖片描述

將刪除的node節點添加回來,在支節點node13上重啟服務

systemctl restart kubelet.service

master節點11會自動納管node13
在這里插入圖片描述

標簽選擇器作用測試,始終保持5個pod
注釋:rc創建5個pod的標簽是myweb;則單獨一個pod:nginx的標簽為web
在這里插入圖片描述

手動編輯nginx的標簽,與rc標簽一致
在這里插入圖片描述

上下對比查看,rc保持5個pod,優先刪除年齡小的3s的pod,刪除一個資歷淺的
在這里插入圖片描述

rc的滾動升級
查看當前nginx版本為nginx.1.13
在這里插入圖片描述

拷貝rc配置文件
在這里插入圖片描述

新建一個k8s_rc2.yaml并且編輯內容,進行與之前的進行對比
在這里插入圖片描述

升級

#rolling-update:滾動升級
#nginx:表示rc的名字為nginx
#--update-period:表示更新周期,我這里設置了10s升級一次
kubectl rolling-update nginx -f k8s_rc2.yaml --update-period=10s

如下圖所示:首先會創建一個nginx2的rc升級pod從0到5,降級nginx的rc從5到0,最后nginx2升級成功,刪除舊得rc的nginx
在這里插入圖片描述

同時查看pod之間間隔時間為10s,并且每個pod的名字為nginx2****
在這里插入圖片描述

在查看nginx的版本為nginx1.15,升級成功
在這里插入圖片描述

回滾,就是將升級的步驟反過就可以,指定舊版本的yaml文件即可

kubectl rolling-update nginx2 -f k8s_rc.yaml --update-period=1s

回滾完成
在這里插入圖片描述

回滾時間
在這里插入圖片描述

查看nginx版本為1.13,回滾成功

3.3 service資源

service幫助pod暴露端口
cluster實現負載均衡的功能(輪詢,rr策略),如果pod存活,cluster會自動將pod加入到vip里面;
每個nodeip端口都會映射到VIP上面
在這里插入圖片描述

創建一個service

apiVersion: v1
kind: Service
metadata:name: myweb
spec:type: NodePort  #端口映射類型ports:- port: 80          #clusterIP端口nodePort: 30000   #node port,如果刪除該行定義,則會起隨機端口targetPort: 80    #pod portselector:             #標簽選擇器:關聯podapp: myweb

創建svc

kubectl create -f nginx_svc.yaml

可以看到標簽、端口映射、VIP
在這里插入圖片描述

關聯的pod
在這里插入圖片描述

瀏覽器訪問node節點IP地址加30000端口即可,出現nginx
在這里插入圖片描述

修改nodePort范圍擴大

vim  /etc/kubernetes/apiserver
KUBE_API_ARGS="--service-node-port-range=3000-50000"
systemctl restart kube-apiserver.service
service默認使用iptables來實現負載均衡, k8s 1.8新版本中推薦使用lvs(四層負載均衡)

3.4 deployment資源

有rc在滾動升級之后,會造成服務訪問中斷(就是標簽不一致導致的),于是k8s引入了deployment資源
創建deployment

apiVersion: extensions/v1beta1 #擴展的
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3template:metadata:labels:app: nginxspec:containers:- name: nginximage: 192.168.111.11:5000/nginx:1.13ports:- containerPort: 80resources:    #資源,該配置可加可不加limits:        #最多能使用多少cpu: 100mrequests:        #這個pod需要多少資源cpu: 100m

創建deploy.yaml文件,rs的標簽:app=nginx,pod-template-hash=642398064與rc的標簽不一樣
deployment,先啟動一個rs資源,rs控制pod的數量;
rs 90%的功能和rc一樣,甚至比rc更強;

在這里插入圖片描述

在根據deploy.yaml文件創建一個svc;
注意:nodePort不能和其他的svc端口發生沖突;selector標簽選擇器要和上面的deploy中pod的nginx一致;

apiVersion: v1
kind: Service
metadata:name: mynginx
spec:type: NodePort ports:- port: 80  nodePort: 3000targetPort: 80selector:app: nginx

創建svc與rs一致的標簽,node端口3000,curl node的IP:3000請求信息為200狀態碼
在這里插入圖片描述

deployment升級和回滾
編輯修改deployment配置文件,進行升級NG

kubectl edit deployment

由原來的nginx:1.13改為nginx:1.15,保存即可
在這里插入圖片描述

會重新啟一個rs,nginx版本為15,又新啟動3個pod,訪問NG服務版本為15
在這里插入圖片描述

回滾歷史版本
查看歷史版本

kubectl rollout history deployment

在這里插入圖片描述

回滾上一個版本,可以看到NG版本回到了13版本

kubectl rollout undo deployment

在這里插入圖片描述

由原來的1版本變成了3版本
在這里插入圖片描述

回滾到指定的版本

kubectl rollout undo deployment --to-revision=2

在這里插入圖片描述

歷史版本查看,有一點不好的地方就是change一直為空,不美觀
在這里插入圖片描述

命令行創建deployment

#--record:表示記錄歷史變化
kubectl run nginx  --image=192.168.111.11:5000/nginx:1.13 --replicas=3 --record

在這里插入圖片描述

歷史變化會記錄
在這里插入圖片描述

命令行升級到指定的版本

kubectl set image deploy nginx nginx=192.168.111.11:5000/nginx:1.15

在這里插入圖片描述

上面的nginx=192.168.111.11:5000/nginx:1.15;就是指定容器的名字nginx
因為一個pod里面可能存在多個業務的容器,每個容器的業務版本也不一致,使用的鏡像也不一致,所以要指定容器
在這里插入圖片描述

舉例子說明
在這里插入圖片描述

常用操作命令如下:

#命令行升級版本
kubectl set image deploy nginx nginx=192.168.111.11:5000/nginx:1.15
#查看deployment所有歷史版本
kubectl rollout history deployment nginx
#deployment回滾到上一個版本
kubectl rollout undo deployment nginx
#deployment回滾到指定版本
kubectl rollout undo deployment nginx --to-revision=2

3.5 tomcat+mysql測試

在k8s中容器之間相互訪問,通過VIP地址!保證不管pod或者node死掉了,都可以互相通信
先創建mysql-rc.yaml文件,啟動pod

apiVersion: v1
kind: ReplicationController
metadata:name: mysql
spec:replicas: 1selector:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: 192.168.111.11:5000/mysql:5.7ports:- containerPort: 3306env:- name: MYSQL_ROOT_PASSWORDvalue: '123456'

在創建mysql-svc.yaml文件,為pod添加一個clusterIP關聯pod

apiVersion: v1
kind: Service
metadata:name: mysql
spec:        #詳細下面沒有指定類型,默認就是clusterIP類型ports:- port: 3306targetPort: 3306selector:app: mysql

創建mysql-svc.yaml之后過去clusterIP,然后將該IP地址添加到tomcat-rc.yaml配置文件中,讓pod通過VIP地址找mysql數據庫
在這里插入圖片描述

創建tomcat-rc.yaml文件,啟動pod

apiVersion: v1
kind: ReplicationController
metadata:name: myweb
spec:replicas: 1selector:app: mywebtemplate:metadata:labels:app: mywebspec:containers:- name: mywebimage: 192.168.111.11:5000/tomcat-app:v2ports:- containerPort: 8080env:- name: MYSQL_SERVICE_HOSTvalue: 'mysql'            #該值要添加mysql的svc的clusterIP地址,可以查看,在添加- name: MYSQL_SERVICE_PORTvalue: '3306'

創建tomcat-svc.yaml文件,為pod添加一個clusterIP關聯pod

apiVersion: v1
kind: Service
metadata:name: myweb
spec:type: NodePortports:- port: 8080nodePort: 30008selector:app: myweb

創建完成,查看狀態
在這里插入圖片描述

瀏覽器訪問nodeip地址http://192.168.111.12:30008/
在這里插入圖片描述

在訪問一下http://192.168.111.12:30008/demo/
這是要連接數據庫的,也可以提交數據
在這里插入圖片描述

點擊啊上圖的Add,添加名字和等級,隨意添加然后提交即可
在這里插入圖片描述

信息添加到數據庫成功
在這里插入圖片描述

去系統數據庫中查看提交的數據,進數據庫中的操作命令和docker命令幾乎一樣
在這里插入圖片描述

可以看到數據庫中的數據和提交的一樣
在這里插入圖片描述

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

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

相關文章

prometheus 標簽選擇器 正則表達式 = 、=~

Prometheus expression是一種用于查詢和操作Prometheus時間序列數據的查詢語言。它具有一套豐富的函數和運算符,可以用于提取、聚合和轉換時間序列數據。 正則表達式在Prometheus expresion中也被廣泛使用,可以用于匹配和過濾時間序列。 Prometheus ex…

Tuxera Ntfs For Mac 2023的具體使用方法

大家都知道由于操作系統的原因,在蘋果電腦上不能夠讀寫NTFS磁盤,但是,今天小編帶來的這款tuxera ntfs 2024 mac 破解版,完美的解決了這個問題。這是一款在macOS平臺上使用的磁盤讀寫軟件,能夠實現蘋果Mac OS X系統讀寫…

CSS實驗性功能及CSS4特性

CSS4目前仍然是一個寬泛的概念,因為CSS的發展通常是通過一系列逐步完善的模塊來進行的,而不是一次性推出一個全新的“第四代”。許多所謂的“CSS4”特性實際上是正在開發或已經草案階段的CSS模塊,它們可能在未來的CSS規范中被正式采納。 選擇器4: :is() 和 :where() 偽類允…

Docker的數據管理(數據卷+數據卷容器)

文章目錄 一、Docker的數據管理1、概述2、主要的技術(三種數據掛載方式)2.1、數據卷(Volumes)2.2、綁定掛載(Bind mounts)2.3、tmpfs掛載(Tmpfs mounts)2.4、之間的關系(…

偏微分方程算法之二階雙曲型方程交替方向隱格式(變形一)

目錄 一、研究目標 二、變形 三、算例實現 四、計算結果 本專欄介紹了二階雙曲型偏微分方程的交替方向隱格式的介紹和推導(鏈接如下),本節將進一步研究二維雙曲型方程初邊值問題其它的交替方向隱格式。

示例丨醫學、醫藥類查新點填寫參考案例

根據《科技查新技術規范》GB/T 32003-2015,科學技術要點是必須要包含查新點內容的,而查新點就是科學技術要點中能夠體現查新項目新穎性和技術進步的技術特征點。 在日常查新工作的接待中,我們發現醫學、醫藥類查新合同上查新點的書寫&#x…

計算機tcp/ip網絡通信過程

目錄 (1)同一網段兩臺計算機通信過程 (2)不同網段的兩臺計算機通信過程 (3)目的主機收到數據包后的解包過程 (1)同一網段兩臺計算機通信過程 如果兩臺計算機在同一個局域網中的同…

算法(九)希爾排序

文章目錄 希爾排序簡介代碼實現 希爾排序簡介 希爾排序(shell sort)選定一個小于N(數列長度)的整數gap作為第一增量,然后將所有距離為gap的元素分成一組,然后對每一組的元素進行插入排序。然后再取一個比前…

(1+X)Java程序設計高級(一)

Throwable:異常的基類,所有異常都繼承自 java.lang.Throwable 類,Throwable 類有兩個直接子類:Error 類和 Exception 類。Error:是 Java 應用程序本身無法恢復的嚴重錯誤,應用程序不需要捕獲、處理這些嚴重…

7.1 Go 錯誤的概念

💝💝💝歡迎蒞臨我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

【SQL每日一練】查詢二進制樹節點

文章目錄 題目一、題析二、題解1.MySQL/SqlServer2.Oracle 題目 有一個表BST,其中包含兩列:N和P,其中N表示二進制樹中節點的值,P是N的父級。 編寫一個查詢,以查找按節點值排序的二進制樹的節點類型。為每個節點輸出以…

迅狐跨境電商系統源碼:技術棧與多端集成

隨著全球化貿易的不斷深入,跨境電商系統源碼成為了連接不同國家和地區消費者與商家的重要橋梁。本文將探討跨境電商系統源碼的技術棧以及如何通過多端集成來提升用戶體驗。 技術棧概覽 跨境電商系統源碼的技術棧是構建高效、穩定平臺的基礎。以下是構建跨境電商系…

IP65 IP45 IP68等等數字防護等級

第一個數字的代表意義 : 0 表示無防護 ,對外界的人或物無特殊之防護 1. 表示防止大于50mm的固體物體侵入 ,防止人體(如手掌)因意外而接觸,內部之零件。防止較大尺寸(直徑大于50mm)的…

Oracle數據塊如何存儲真實數據

上周休假了幾天,頹廢了,沒有輸出。今天寫一點內容。 先拋出一個問題。表中的數據在Oracle數據塊中是如何存儲的呢?今天簡單說一下這個問題。通常數據庫中的表會存儲字符,數字,日期 這3種常見的數據類型。下面的例子就用這3種數據類型作說明 首先,Oracle數據塊底層存儲這…

Github 2024-05-31開源項目日報 Top10

根據Github Trendings的統計,今日(2024-05-31統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Python項目4TypeScript項目3Jupyter Notebook項目2Vue項目1Cuda項目1Elixir項目1簡單、純凈的C/CUDA中的LLM培訓 創建周期:3 天開發語言:Cuda…

OpenCV中的圓形標靶檢測——背景概述

圓形標靶 如下圖所示,相機標定中我們使用帶有固定間距圖案陣列的平板,來得到高精度的標靶像素坐標,進而計算得到相機的內參、畸變系數,相機之間的變換關系,和相機與世界坐標系的變換關系(即外參)。 不過標靶的形式多樣,從圖案類型來看常見的有棋盤格、圓形標靶…

自然語言處理(NLP)神經網絡的數據預處理步驟

1. 文本清理(Text Cleaning) 目的:去除文本中的噪音和無關內容,確保輸入數據的質量和一致性。 方法: 去除標點符號:刪除文本中的標點符號(視任務需求,某些標點符號可能保留&#…

音視頻開發13 FFmpeg 音頻 相關格式分析 -- AAC ADTS格式分析

這一節,我們學習常用的音頻的格式 AAC,重點是掌握 AAC的傳輸格式 ADTS 頭部的信息,目的是 : 當音頻數據有問題的時候,如果是AAC的編碼,在分析 頭部信息的時候能夠根據頭部信息 判斷問題是否出現在 頭部。 A…

今天來講講,抖音小店商品的上架流程以及優化細節~

大家好,我是噴火龍。 做抖音小店選品選好之后,優化上架商品也是很重要的,也有很多需要注意的細節,今天就來給大家講講。 首先,軟件采集,大致分為七步。 1. 以抖精靈為例,注冊賬號登錄&#x…

到無窮大和更遠,用分形更好

文章目錄 一、說明二、分形到底是什么?三、更多更深刻的四、引進無窮小會產生什么樣的怪事?五、希爾伯特曲線六、還有什么有趣的要補充的嗎? 一、說明 ???????數學領域有太多有趣的領域,領域我特別感興趣。這是一個奇妙的…