k8s docker 使用指北

来源:https://www.cnblogs.com/dsy1/archive/2022/05/29/16322701.html
-Advertisement-
Play Games

HashMap源碼 目錄 1.1 包含的屬性 1.2 構造器 1.3 hash方法源碼 1.4 put源碼 1.5 resize源碼 1.6 table 變數為什麼用transient 修飾 1.1 包含的屬性 public class HashMap<K,V> extends AbstractMa ...


K8S 及docker使用指北
文章目錄 1
一、Docker常用命令總結 5
1、Docker容器常用操作 6
(1)鏡像的查看與刪除 6
(2)容器的啟動與進入 6
(3)通過容器提交鏡像 7
(4)鏡像的保存與載入 7
(5)容器與主機之間進行數據拷貝 7
(6)鏡像重命名 8
(7)使用GPU運行容器 8
(8)容器的保存與導入 8
(9)鏡像的拉取與上傳 9
2、註意事項 9
二、k8s常用命令總結 10
1、kubectl用法概述 10
2、kubectl輸出格式 13
3、kubectl常用操作 14
(1)創建資源對象 14
(2)查看資源對象 15
(3)描述資源對象 15
(4)刪除資源對象 15
(5)執行容器命令 16
(6)查看容器日誌 16
(7)查看集群信息 16
三、nvidia-smi常用命令總結 16
1、顯示所有GPU的當前信息狀態 16
2、實時查看GPU使用情況 18
四、k8s陳述式管理 18

  1. 陳述式資源管理方法 18
  2. k8s相關信息查看 18
    2.1 查看版本信息 18
    2.2 查看資源對象簡寫 18
    2.3 查看集群信息 21
    2.4 配置kubectl自動補全 21
    2.5 查看日誌 21
    2.6 基本信息查看 21
    2.6.1 查看master節點狀態 21
    2.6.2 查看命名空間 22
    2.7 命名空間操作 22
    2.7.1 查看default命名空間的所有資源 22
    2.7.2 創建命名空間app 22
    2.7.3 刪除命名空間app 23
    2.8 deployment/pod操作 23
    2.8.1 在命名空間kube-public創建副本控制器(deployment)來啟動Pod(nginx-test) 23
    2.8.2 描述某個資源的詳細信息 23
    2.8.3 查看命名空間kube-public中pod信息 24
    2.8.4 登錄容器 24
    2.8.5 刪除(重啟)pod資源 24
    2.8.6 若無法刪除,總是處於terminate狀態,則要強行刪除pod 25
    2.8.7 擴縮容 25
    2.8.8 刪除副本控制器 26
    2.9 增加/刪除label 26
    2.9.1 增加label 26
    2.9.2 刪除label 26
  3. K8S模擬項目 26
    3.1 項目的生命周期 26
    3.2 創建kubectl run命令 26
    3.3 發佈kubectl expose命令 27
    3.3.1 Service的作用 27
    3.3.2 Service的類型 28
    3.3.3 查看Pod網路狀態詳細信息和Service暴露的埠 28
    3.3.4 查看關聯後端的節點 29
    3.3.5 查看service的描述信息 29
    3.3.6 查看負載均衡埠 29
    3.3.7 訪問查看 30
    3.3.8 查看訪問日誌 31
    3.4 更新kubectl set 32
    3.4.1 獲取修改模板 32
    3.4.2 查看當前nginx的版本號 32
    3.4.3 將nginx版本更新為1.15 32
    3.4.4 監聽pod狀態 32
    3.4.5 查看pod的ip變化 33
    3.4.6 重新查看nginx版本號 33
    3.5 回滾kubectl rollout 34
    3.5.1 查看歷史版本 34
    3.5.2 執行回滾到上一個版本 34
    3.5.3 執行回滾到指定版本 35
    3.5.4 檢查回滾狀態 35
    3.6 刪除kubectl delete 36
    3.6.1 刪除副本控制器 36
    3.6.2 刪除service 36
  4. 金絲雀發佈/灰度發佈(Canary Release) 36
    4.1 金絲雀發佈簡介 36
    4.2 更新deployment的版本,並配置暫停deployment 36
    4.2.1 創建pods 36
    4.2.2 發佈服務 37
    4.2.3 查看nginx版本 37
    4.2.4 定義版本CHANGE-CAUSE 37
    4.2.5 更新nginx版本為1.15並配置暫停 38
    4.2.6 觀察更新狀態 38
    4.2.7 監控更新的過程 38
    4.2.8 查看nginx版本 39
    4.2.9 查看並更新曆史版本change-cause 40
    4.2.10 resume繼續更新 41
    4.2.11 查看最後的更新情況 41
    五、聲明式管理 41
  5. 聲明式管理方法 41
  6. 查看資源配置清單 42
  7. 解釋資源配置清單 44
  8. 修改資源配置清單並應用 45
    4.1 離線修改 45
    4.2 線上修改 46
  9. 刪除資源配置清單 46
    5.1 陳述式刪除 46
    5.2 聲明式刪除 46

一、Docker常用命令總結

1、Docker容器常用操作
(1)鏡像的查看與刪除
• 查看鏡像:docker images 或 docke image ls
• 刪除容器:docker rm 容器ID //註意刪除容器前先停止容器
• 刪除鏡像:docker rmi 鏡像名 //註意刪除鏡像前先刪除容器
(2)容器的啟動與進入
• 運行容器:docker run -it 鏡像名 /bin/bash
• 退出容器:exit 或者 Ctrl+P+Q
• 查看容器:docker ps -a
• 查看運行的容器:docker ps
• 容器停止:docker stop 容器ID
• 啟動容器:docker start 容器ID
• 重啟容器:docker restart 容器ID
• 重啟容器後進入互動式:docker start -i 5c6ce895b979
• 進入容器:docker attach 容器ID docker exec -it 容器ID /bin/bash
• 舉例:將nginx鏡像運行為一個容器:docker run -d -p 81:80 -it nginx /bin/bash //其中-d是保持後臺運行,-p 是埠映射,將內部的埠80向外部的埠81映射,/bin/bash就表示啟動容器後啟動bash。
(3)通過容器提交鏡像
• 提交鏡像:docker commit 容器ID 鏡像名[:tag] 舉例:docker commit f7507396068a vehicle_detect:v1
(4)鏡像的保存與載入
• 保存鏡像:docker save m2>m2.tar //保存m2鏡像到m2.tar文件
docker save m2 -o /home/m2.tar
• 鏡像載入:docker load<m2.tar
docker load -i m2.tar
(5)容器與主機之間進行數據拷貝
• 主機目錄拷貝到容器目錄:docker cp /data/test 96f7f14e99ab:/data/ # 將主機/data/test目錄拷貝到容器96f7f14e99ab的/data目錄下
• 主機目錄拷貝到容器目錄,目錄重命名:docker cp /data/test 96f7f14e99ab:/data # 將主機/data/test目錄拷貝到容器96f7f14e99ab中,目錄重命名為data
• 容器目錄拷貝到主機目錄:docker cp 96f7f14e99ab:/data /tmp/ # 將容器96f7f14e99ab的/data目錄拷貝到主機的/tmp目錄中
(6)鏡像重命名
• 重命名鏡像:docker tag ubuntu:15.10 asialee/ubuntu:v3 #將鏡像ubuntu:15.10標記為 asialee/ubuntu:v3 鏡像
(7)使用GPU運行容器
• 容器使用所有GPU:docker run -it --gpus all vehicle_detect:v1 /bin/bash
• 容器使用兩個GPU:docker run -it --gpus 2 vehicle_detect:v1 /bin/bash
• 容器指定GPU運行:docker run -it --gpus ' "device=1,2" ' vehicle_detect:v1 /bin/bash
• docker run -it --gpus ' "device=UUID-ABCDEF,1" ' vehicle_detect:v1 /bin/bash
(8)容器的保存與導入
• 將容器保存為tar文件:docker export -o m2.tar 容器ID
• 舉例:將id為a404c6c174a2的容器按日期保存為m2-20201016.tar文件
docker export -o m2-date +%Y%m%d.tar a404c6c174a2
• 從歸檔文件中創建鏡像:docker import m2.tar m3:v1
• 舉例:從鏡像歸檔文件m2.tar創建鏡像,命名為asialee/m3:v1
docker import m2.tar asialee/m3:v1
區別:
• - docker save 保存的是鏡像(image),docker export 保存的是容器(container);
• - docker load 用來載入鏡像包,docker import 用來載入容器包,但兩者都會恢復為鏡像;
• - docker load 不能對載入的鏡像重命名,而 docker import 可以為鏡像指定新名稱。
(9)鏡像的拉取與上傳
• 從鏡像倉庫中拉取或者更新指定鏡像:docker pull
• 舉例:從Docker Hub下載ubuntu最新版鏡像:docker pull ubuntu
• 從Docker Hub下載REPOSITORY為ubuntu的所有鏡像:docker pull -a ubuntu
• 將本地的鏡像上傳到鏡像倉庫:docker push #要先登陸到鏡像倉庫
• 舉例:上傳本地鏡像m2:v1到鏡像倉庫中:docker push m2:v1
• 登錄鏡像倉庫:docker login local.harbor.com 用戶名/密碼
• docker login -u asialee -p root12345 local.harbor.com
• 鏡像上傳:docker push local.harbor.com/library/ai-detect
(10)查看docker容器內的IP
• 進入容器後,查看docker容器內的IP:cat /etc/hosts
2、註意事項
鏡像轉文件的命令是: docker save image > /root/image.tar
文件轉鏡像的命令是: docker load < /root/image.tar 或者 docker load -i /root/image.tar
錯誤 1 是: requested load from stdin, but stdin is empty
結論 : docker load 的時候, < 誤寫成 >, 會出現這個錯誤,並且原 tar 包會被修改,修改後就不可用了
錯誤 2 是: open /var/lib/docker/tmp/docker-import-054903443/repositories: no such file or directory
結論 : 如果你使用過錯誤1 中的命令,那麼即使之後的命令都是正確的,也會遇到上述錯誤,避免的辦法是不要輸錯命令。倘若已經輸錯了,那麼唯一可用的方法是刪除當前的 tar 包,並且重新獲取 tar 包。
二、k8s常用命令總結
kubectl是Kubernetes的命令行工具,可以讓用戶通過命令行的方式對Kubernetes集群進行操作,通過它與Kubernetes進行交互。通過kubectl能夠對集群本身進行管理,並能夠在集群上進行容器化應用的安裝部署。
1、kubectl用法概述
(1)kubectl命令行的語法如下
$ kubectl [command] [TYPE] [NAME] [flags]
• command:子命令,用於操作Kubernetes集群資源對象的命令,例如create、delete、describe、get、apply等。
• TYPE:資源對象的類型,區分大小寫,能以單數形式、複數形式或者簡寫形式表示。例如以下3種TYPE是等價的 (1) kubectl get pod pod1 ,(2)kubectl get pods pod1,(3)kubectl get po pod1。
• NAME:資源對象的名稱,區分大小寫。如果不指定名稱,則系統將返回屬於TYPE的全部對象的列表,例如$ kubectl get pods將返回所有Pod的列表。
• flags:kubectl子命令的可選參數,例如使用“-s”指定apiserver的URL地址而不用預設值。
kubectl可操作的資源對象類型如下所示:
資源對象的名稱 縮寫
cluster
componentstatuses cs
configmaps cm
daemonsets ds
deployments deploy
endpoints ep
events ev
horizontalpodautoscalers hpa
ingresses ing
Jobs
limitranges limits
nodes no
namespace ns
networkpolicies
statefulsets
persistentvolumeclaims pvc
persistentvolumes pvc
pods po
podsecuritypolicies psp
podtemplate
replicasets rs
replicationcontrollers rc
resourcequotas quota
cronjob
secrets
serviceaccounts
services svc
storageclasses sc
thirdpartyresources
(2)同時對多個資源對象進行操作
在一個命令行中也可以同時對多個資源對象進行操作,以多個TYPE和NAME的組合表示,示例如下。
• 獲取多個Pod的信息:kubectl get pods pod1 pod2
• 同時應用多個yaml文件,以多個-f file參數表示:kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
2、kubectl輸出格式
kubectl 命令可以用多種格式對結果進行顯示,輸出的格式通過-o參數指定:
$ kubectl [command] [TYPE] [NAME] -o=<output_format>
根據不同子命令的輸出結果,可選的輸出格式如下:

常用的輸出格式示例如下:
• 顯示Pod的更多信息:kubectl get pod -o wide
• 以yaml格式顯示Pod的詳細信息:kubectl get pod -o yaml
• 以JSON格式顯示Pod的詳細信息:kubectl get pod -o json
• 以自定義列名顯示Pod的信息:kubectl get pod -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
3、kubectl常用操作
(1)創建資源對象
• 根據yaml配置文件創建資源對象:kubectl create -f ***.yaml
(2)查看資源對象
• 查看資源版本標簽:kubectl api-versions
• 查看集群狀態:kubectl get cs
• 查看集群節點信息:kubectl get nodes
• 查看所有Pod列表:kubectl get pods
• 查看deployment:kubectl get deploy
• 查看埠映射:kubectl get svc
• 查看指定命名空間的服務:kubectl get svc -n kubectl-system
• 顯示運行中的Pod、Service、Deployment以及ReplicaSet的關鍵信息:kubectl get all
• 查看所有的命名空間:kubectl get all --all-namespace
(3)描述資源對象
• 顯示Node的詳細信息:kubectl describe nodes
• 顯示Pod的詳細信息:kubectl describe pods
• 顯示由RC管理的Pod的信息:kubectl describe pods
(4)刪除資源對象
• 基於pod.yaml定義的名稱刪除Pod:kubectl delete -f pod.yaml
• 刪除所有Pod:kubectl delete pods --all
• 於刪除名稱為my_pod的Pod:kubectl delete pod my_pod
(5)執行容器命令
• 執行Pod的date命令:kubectl exec date
• 指定Pod中某個容器執行date命令:kubectl exec -c date
• 通過bash進入容器:kubectl exec -it -c /bin/bash
• kubectl exec -it container-name /bin/bash
(6)查看容器日誌
• 查看容器輸出到stdout的日誌:kubectl logs
• 跟蹤查看容器的日誌,相當於tail -f命令的結果:kubectl logs -f -c
(7)查看集群信息
• 查看集群狀態信息:kubectl cluster-info
三、nvidia-smi常用命令總結
nvidia-smi提供監控GPU使用情況和更改GPU狀態的功能,是一個跨平臺工具,它支持所有標準的NVIDIA驅動程式。
1、顯示所有GPU的當前信息狀態
命令:nvidia-smi

• Fan:風扇轉速,從0到100%之間變動,N/A表示沒有風扇
• Temp: GPU溫度,單位攝氏度(GPU溫度過高會導致GPU頻率下降)
• Perf:性能狀態,從P0到P12,P0表示最大性能,P12表示狀態最小性能
• Pwr: GPU功耗,上方的Persistence-M:是持續模式的狀態,持續模式雖然耗能大,但是在新的GPU應用啟動時,花費的時間更少,這裡顯示的是off的狀態。
• Bus-Id:GPU匯流排,domain

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 寫在前面 它們不厭其煩地執行人的指令;它們收集世間萬物的知識,供人頃刻之間隨心調取;它們是現代社會的中流砥柱,但其存在卻往往備受忽視。 它們就是電腦,是人類迄今為止最偉大的發明成就,是登峰造極、至高無上的終極工具。 電腦科學的問世,推動了人類歷史上最非比尋常的社會變革之一。 而編程語言作為電腦 ...
  • 導讀: 本文將介紹過去15年中,網易大數據團隊在應對不斷涌現的新需求、新痛點的過程中,逐漸形成的一套邏輯數據湖落地方法。內容分為五部分: 關於網易數帆 為什麼做邏輯數據湖 怎麼做邏輯數據湖 未來規劃 精彩問答 -- 01 關於網易數帆 網易數帆是從網易杭州研究院孵化出來的。網易杭研的重要職責是公共技 ...
  • Buffer pool 我們都知道我們讀取頁面是需要將其從磁碟中讀到記憶體中,然後等待CPU對數據進行處理。我們直到從磁碟中讀取數據到記憶體的過程是十分慢的,所以我們讀取的頁面需要將其緩存起來,所以MySQL有這個buffer pool對頁面進行緩存。 首先MySQL在啟動時會向操作系統申請一段連續的內 ...
  • 原文地址: 關於TornadoFx和Android的全局配置工具類封裝實現及思路解析 - Stars-One的雜貨小窩 目前個人開發軟體存在設置頁面,可以讓用戶自定義些設置,但我發現,存儲數據的代碼邏輯實在是有些繁瑣(保存及APP打開的設置初始化) 於是便是花了些精力研究了些,封裝了個簡單的工具類, ...
  • Vue框架搭建項目時所用的vue官方項目模版,通過腳手架,下載vue項目,如何創建項目,認識項目結構和拉取項目模版。 ...
  • DOM獲取元素、修改元素 1.DOM ①什麼是DOM?作用? DOM是文檔對象模型作用:操作網頁內容,可以開髮網頁內容特效和實現用戶交互。 ②DOM對象 2.獲取DOM元素 ① 根據CSS選擇器來獲取DOM元素 (重點) 思考 獲取一個DOM元素我們使用誰?querySelector() 獲取多個D ...
  • 1 /* ColorTestViewer 顏色調試器 2 3 attribute: 4 onchange: Function; //顏色改變回調; 預設null 5 6 //以下屬性不建議直接修改 7 rgb: RGBColor; //rgb模式顏色 8 hsv: Object{h,s,v}; // ...
  • 1.字元集/字元編碼是什麼? 字元集或者說字元編碼就是給字元定義了數值編號以及數值編號存儲格式。 嚴格來說字元集和字元編碼是兩個概念: charset 是 character set 的簡寫,即字元集。 encoding 是 charset encoding 的簡寫,即字元集編碼,簡稱編碼。 字元集 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...