K8s的常用命令以及yaml文件的創建

目錄

一、聲明式管理方法:YAML文件

1、yaml文件簡介

2、yaml和json的主要區別:

3、YAML的語法格式

4、yaml文件組成部分

①控制器定義

5、查看api資源版本標簽

6、編寫nginx-deployment.yaml資源配置清單

6.1創建資源對象

6.2查看創建的pod資源

7、創建service服務并對外提供訪問并測試

二、K8s中的port概述

①port

②nodeport

③targetport

④containerport

1、創建yaml文件模板

2、查看生產yaml格式

3、查看生成的json格式

4、通過yaml格式導出生成模板,并進行修改以及刪除一些不必要的參數

5、查看字段幫助信息

6、怎樣可以更輕松的寫yaml

6.1用run命令生成

6.2用get命令導出

6.3yaml文件的學習方法

三、具體案例

1、案例需求:


一、聲明式管理方法:YAML文件

①適合對資源的修改操作

②聲明式資源管理方法依賴于資源配置清單文件對資源進行管理

③資源配置清單文件有兩種格式:yaml(人性化,已讀),json(易于api接口解析)

④對資源的管理,是通過事先定義在統一資源配置清單內,再通過陳述式命令應用到k8s集群中

⑤語法格式:kubectl create/apply/delete -f xxx.yaml

1、yaml文件簡介

YAML仍然是一種標記語言,主要強調這種語言是以數據為中心,而不是以標記為中心,而像XML語言就使用了大量的標記。

YAML可讀性高,易于理解,用來表達數據序列化的格式。它的語法和其他高級語言類型,還可以簡單表達屬組,散列表,標量等數據形態。它使用空白符號縮進和大量依賴外觀的特色,特別適合用來表達或編輯數據結構,各種配置文件。

yaml配置文件的后綴為.yml

2、yaml和json的主要區別:

①yaml使用空格縮進,這是python開發人員熟悉的領域

②javascript開發人員喜歡JSON,因為它是javascript的一個子集,可以直接在Javascript中解釋和編寫,同時使用簡寫方式生命JSON,在使用沒有空格的典型變量名時,不需要鍵中的雙引號。

③有很多解釋器在YAML和JSON的所有語言中都能很好的工作。

④在許多情況下,yaml的空白格式可以更容易查看,因為格式化需要更人性化的方法

⑤如果您的編輯器中沒有空格可見或縮進線指示符,那么yaml的空白雖然更緊湊,更容易查看,蛋可能難以手動編輯。

⑥JSON的序列化和反序列化要快得多,因為要檢查的功能明顯少于yaml,這使得更小更輕的代碼能夠處理JSON

⑦一個常見的誤解是yaml需要較少的標點符號并且比JSON更緊湊,但這是完全錯誤的。空格是不可兼得,所以看起來字符比較少,但是如果你計算實際的空格是必要的,以便于正確解釋yaml以及正確的縮進,你會發現yaml實際上需要比json更多的字符。json不使用空格來表示層次結構或分組,并且可以通過刪除不必要的空格來輕松展平,以實現更緊湊的傳輸。

3、YAML的語法格式

Kubernetes支持yaml和json格式管理資源對象

JSON格式:主要用于api接口之間消息的傳遞

YAML格式:用于配置和管理,YAML的配置參數格式比較清晰

語法格式:

①大小寫敏感

②以空格的方式縮進表示層級關系

③通常開頭縮進兩個空格(統一層級對應即可)

④不支持指標符tab縮進,只對空格表示縮進

⑤關鍵詞字符后縮進一個空格,比如冒號都好后面需要縮進一個字符

⑥---表示yaml格式一個文件的開始

⑦支持“#”表示注釋

4、yaml文件組成部分

①控制器定義

5、查看api資源版本標簽

kubectl api-versions

如果是業務場景,一般首選使用 apps/v1(apps/v1 從 v1.9 版本開始提供 API)。在 k8s v1.16 版本之前使用的是 extensions/v1beta1,extensions/v1beta1 從 v1.20 版本開始不再提供 Ingress 資源。帶有 beta 字樣的代表的是測試版本,不用在生產環境中。

6、編寫nginx-deployment.yaml資源配置清單

mkdir /opt/demo
cd /opt/demo/參考模板:
vim nginx-deployment.yaml
apiVersion: apps/v1   #指定api版本標簽
kind: Deployment      #定義資源的類型/角色,deployment 為副本控制器,
此處資源類型可以是Deployment、Job、 Ingress、 Service等
metadata:             #定義資源的元數據信息,比如資源的名稱、namespace、標簽等信息name: nginx-deployment   #定義資源的名稱,在同一個namespace空間中必須是唯一的labels:             #定義資源標簽(Pod的標簽)app: nginx
spec:              #定義deployment資源需要的參數屬性,諸如是否在容器失敗時重新啟動容器的屬性replicas: 3       #定義副本數量selector :        #定義標簽選擇器matchLabels:     #定義匹配標簽app: nginx     #匹配上面的標簽,需與上面的標簽定義的app保持一致template:         #定義業務模板,如果有多個副本,所有副本的屬性會按照模板的相關配置進行匹配metadata:labels:app: nginxspec:containers:            #定義容器屬性- name: nginx          #定義一個容器名,一個- name: 定義一個容器image: nginx:1.15.4   #定義容器使用的鏡像以及版本ports:- containerPort: 80   #定義容器的對外的端口

6.1創建資源對象
kubectl create -f nginx-deployment.yaml
或者
kubectl apply -f nginx-deployment.yaml

6.2查看創建的pod資源
kubectl get pods -o wide -n kube-publickubectl get deploy -n kube-public

7、創建service服務并對外提供訪問并測試

vim nginx-service.yamlapiVersion: v1
kind: Service
metadata:name: nginx-demo1namespace: kube-publiclabels:name: nginx-demo1
spec:type: NodePortports:- port: 8080targetPort: 80nodePort: 31111selector:app: nginx-demo1kubectl apply -f nginx-service.yamlkubectl get svc -n kube-public在瀏覽器輸入 nodeIP: nodePort 即可訪問
http://192.168.223.11:31111

二、K8s中的port概述

①port

port是k8s集群內部訪問service的端口,即通過clusterIP:port可以從Pod所在的Node上訪問到service

②nodeport

nodeport是外部訪問k8s集群中service的端口,通過nodeIP:nodeport可以從外部訪問到某個service

③targetport

tarport是pod的端口,從port或nodeport來的流量經過kube-proxy反向代理負載均衡轉發到后端pod的targetpod上,最后進入容器

④containerport

containerport是pod內部容器的端口,targetport映射到containerport

1、創建yaml文件模板

kubectl run --dry-run打印相應的api對象而不是執行創建

--dry-run:試運行 kubectl run nginx-ceshi --image=nginx --port=80  --dry-run

--dry-run表示試運行,不是真正的執行命令(測試命令是否正確),即并不會真的創建出pod和deployment實例,去掉該參數后即可真正執行命令。

2、查看生產yaml格式

使用--dry-run試運行可不觸發生產命令,然后通過-o yaml可實現對其yaml資源配置清單的查看

kubectl run nginx-ceshi --image=nginx --port=80  --dry-run -o yaml

3、查看生成的json格式

可以通過-o json查看該命令產生的json配置清單

4、通過yaml格式導出生成模板,并進行修改以及刪除一些不必要的參數

kubectl run nginx-ceshi --image=nginx --port=80  --dry-run -o yaml > nginx-ceshi.yaml

模板:
vim nginx-ceshi.yaml
apiVersion: apps/v1betal     #api 版本改成 api/v1
kind: Deployment
metadata:creationTimestamp: null    #刪除labels:run: nginx-ceshiname: nginx-ceshi
spec: replicas: 3selector: matchLabels: run: nginx-ceshistrategy: {}                #刪除template: metadata: creationTimestamp: null #刪除labels: run: nginx-ceshispec: containers: - image: nginxname: nginx-ceshiports: - containerPort: 80resources: {}         #刪除
status: {}                    #刪除

生成鏡像并查看

將現有的資源生成模板導出

kubectl get pod/nginx-deployment-6f9f6d866c-w2sdc -o yaml -n kube-public###注現在最新版本的kubctl  get 不支持 --export 參數

保存到文件中

kubectl get deployment.apps/nginx-deployment -o yaml -n kube-public > my-deploy.yaml

5、查看字段幫助信息

explain可以一層層的查看相關資源對象的幫助信息

kubectl explain deployments.spec.template.spec.containers
或
kubectl explain pods.spec.containers

6、怎樣可以更輕松的寫yaml

6.1用run命令生成

沒有相關資源,使用run或者create命令--dry-run選項,后期可以修改yaml文件

kubectl run my-deploy --image=nginx --dry-run -o yaml > my-deploy.yaml
6.2用get命令導出

已有相關資源,使用get命令{--export選項:使用老版本的kubectl}

kubectl get deploy/nginx-deployment -o=yaml -n kube-public > new.yaml
6.3yaml文件的學習方法

①多看別人(官方)寫的,能讀懂
②能照著現場的文件改著用
③遇到不懂的,善用kubectl explain ...命令查看

三、具體案例

1、案例需求:

①自主式的pod pod

②資源名稱:my-nginx-ky35

③命名空間:my-ky35

④容器鏡像:nginx:1.14

⑤容器端口:80

⑥標簽:njzb:my-ky35

⑦創建srvice去關聯上面的pod

⑧修改頁面,顯示woshichaoren對外訪問 輸入地址就能訪問

mkdir /opt/demo
[root@master01 ~]]#cd /opt/demo/
[root@master01 demo]]#vim pod-ns-svc.yaml

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

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

相關文章

使用python將一段文本寫入一個txt文件中且先格式化文件名

有一段文本內容&#xff0c;有“標題”和“內容”組成。 任務&#xff1a;要將這段文本&#xff0c;存放到一個txt文件中&#xff0c;文件名為當天的日期加上“標題”內容。因為“標題”內可能有/<>之類的&#xff0c;還需要格式化一下。 已經將上述功能都寫成了函數&a…

安卓手機APP開發__近距離無線通信(NFC)概述

安卓手機&#xff21;&#xff30;&#xff30;開發&#xff3f;&#xff3f;近距離無線通信(NFC)概述 概述 近距離無線通信 (NFC) 是一組近距離無線技術&#xff0c;距離通常不超過 4 厘米才能 發起連接。通過 NFC&#xff0c;您可以在 NFC 標簽和 Android 設備之間&#xf…

【Redis】 String類型的內部編碼與使用環境

文章目錄 &#x1f343;前言&#x1f334;內部編碼&#x1f384;典型使用場景&#x1f6a9;緩存功能&#x1f6a9;計數&#xff08;Counter&#xff09;功能&#x1f6a9;共享會話&#xff08;Session&#xff09;&#x1f6a9;驗證碼功能 ?總結 &#x1f343;前言 本篇文章重…

Unity-Sprite Atlas+UGUI系統的運行原理

每日一句&#xff1a;別聽世俗耳語&#xff0c;看自己的風景就好 目錄 SA的原理&#xff1a; SA的優點&#xff1a; SA的缺點&#xff1a; DrawCall是什么&#xff1f; 批處理是什么&#xff1f; 我們先了解一下UGUI系統的運行原理吧&#xff01; 提到圖集優化&#xff0…

cocosCreator動態生成二維碼

cocosCreator 版本&#xff1a;3.7.2 開發語言&#xff1a;typeScript 我們在游戲開發中&#xff0c;經常會生成一個專屬于玩家個人的二維碼&#xff0c;比如說推廣、充值等功能。 接到這個任務&#xff0c;在網上找了下&#xff0c;還是有很多教程的。但是這些教程大部分都是用…

Ollydbg動態分析MessageBoxA輸出hellow world

一、目的 找到main函數找到調用的MessageBoxA函數 測試源碼 #include <iostream> #include <windows.h>int main() {MessageBoxA(NULL, "Hellow World", "Title", MB_OK);return 1; }二、快捷鍵 指令快捷鍵說明RestartCtrlF2重新開始調試S…

buu[HCTF 2018]WarmUp(代碼審計)

buu[HCTF 2018]WarmUp&#xff08;代碼審計&#xff09; 題目 訪問source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php…

MySQL基礎學習: SET FOREIGN_KEY_CHECKS = 0

文章目錄 一、介紹二、使用方法三、注意事項 一、介紹 在MySQL中&#xff0c;SET FOREIGN_KEY_CHECKS 0; 是一個特殊的命令&#xff0c;用于臨時禁用外鍵約束檢查。這在你執行一些涉及多個表并且可能違反外鍵約束的批量操作時非常有用。 為什么需要禁用外鍵約束檢查&#xf…

電腦鍵盤如何練習盲打?

電腦鍵盤如何練習盲打&#xff1f;盲打很簡單&#xff0c;跟著我做&#xff0c;今天教會你。 請看【圖1】&#xff1a; 【圖1】中&#xff0c;紅色方框就是8個基準鍵位&#xff0c;打字時我們左右手的8個手指就是放在這8個基準鍵位上&#xff0c;F鍵和J鍵上各有一個小突起&…

Spring6基礎筆記

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 輕量級開源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并創立&#xff0c;其目的是用于簡化 Java 企業級應用的開發難度和開發周期。Spring的用途不僅限于服務器端的開發…

mysql圖形化界面及將mysql注冊成后臺程序

安裝圖形化界面版本 右鍵新建數據庫 字符集使用utf8防止以后數據庫中存在中文字符導致亂碼 將mysql注冊成后臺程序 cmd進入命令行界面 切換路徑到cd /mysql/bin 將mysql注冊成后臺程序 mysqld.exe --install mysql1 (失敗&#xff0c;說明沒有權限) 以管理員身份打開成功…

ASP.NET防止流量攻擊的措施

請求速率限制&#xff1a; // 在 Global.asax.cs 文件中 Application_BeginRequest 方法中添加以下代碼 protected void Application_BeginRequest() {// 檢查請求頻率&#xff0c;限制每個 IP 地址的請求次數if (RequestThrottler.IsRequestLimitExceeded(Context.Request.Use…

如何跨過robots協議的限制爬取內容?

在討論如何“跨過robots協議的限制爬取內容”之前&#xff0c;重要的是強調遵循網絡禮儀和法律法規的必要性。robots協議&#xff08;Robots Exclusion Standard&#xff09;是網站所有者向網絡爬蟲&#xff08;包括搜索引擎和其他自動化工具&#xff09;傳達其爬取意愿的一種方…

SYSTEM文件夾介紹(sys文件夾、deley文件夾、USART 文件夾、SysTick、printf函數、fputc函數、半主機模式)

參考 http://t.csdnimg.cn/P9H6x 一、sys文件夾介紹 在上述介紹的 sys 文件夾中&#xff0c;涉及了一些與系統控制、中斷管理、低功耗模式、棧頂地址設置、系統時鐘初始化以及緩存配置等相關的函數。以下是對每個功能的簡要分析&#xff1a; 1.中斷類函數&#xff1a; sys_n…

CCF20230901——坐標變換(其一)

CCF20230901——坐標變換&#xff08;其一&#xff09; #include<bits/stdc.h> using namespace std; int main() {int n,m,x[101],y[101],x1[101],y1[101];cin>>n>>m;for(int i0;i<n;i)cin>>x1[i]>>y1[i];for(int j0;j<m;j)cin>>x[…

uniapp 高德地圖與百度地圖精準定位,高德地圖定位報錯

目前我這邊測試發現的問題 UNIAPP 獲取定位的代碼 在這里插入代碼片 data的參數 data() {return {id: 0, // 使用 marker點擊事件 需要填寫idtitle: map,latitude: 39.909,longitude: 116.39742,covers: [{latitude: 39.909,longitude: 116.39742,width: 50,height: 50,iconPa…

負反饋系統中運放的相位裕度仿真、環路增益的stb仿真

這里沒目錄標題 一、引言二、巴克豪森判據、最壞情況下的相位裕度、相位裕度三、相位裕度與開環&#xff0c;環路&#xff0c;閉環增益的關系四、環路增益、閉環增益和相位的仿真4.1 運放為雙入單出時4.1.1 系統的閉環增益4.1.2 stb仿真系統的環路增益和相位裕度&#xff08;環…

Python項目:數據可視化_下載數據【筆記】

源自《Python編程&#xff1a;從入門到實踐》 作者&#xff1a; Eric Matthes 02 下載數據 2.1 sitka_weather_07-2021_simple.csv from pathlib import Path import matplotlib.pyplot as plt import csv from datetime import datetimepath Path(D:\CH16\sitka_weather_0…

python web自動化(Allure報告)

Allure詳細安裝請看之前的博客 1.Allure配置與?? 運??例&#xff0c;?成allure報告 pip install allure-pytest -i https://mirrors.aliyun.com/pypi/simple/ 運??例&#xff0c;?成allure報告 # main.py import os import pytest if __name__ __m…

SpringBoot如何實現熱部署

熱部署 使用SpringBoot提供的DevTools實現熱部署 原理&#xff1a;實時監控classpath下文件的變化&#xff08;即編譯后的target目錄&#xff09;&#xff0c;如果發生變化則自動重啟 配置&#xff1a;添加DevTools的依賴即可&#xff08;需要開啟IDEA的自動編譯&#xff09…