Kubernetes 常用操作大全:全面掌握 K8s 基礎與進階命令

Kubernetes(簡稱 K8s)作為一種開源的容器編排工具,已經成為現代分布式系統中的標準。它的強大之處在于能夠自動化應用程序的部署、擴展和管理。在使用 Kubernetes 的過程中,熟悉常用操作對于高效地管理集群資源至關重要。本文將詳細介紹 Kubernetes 的各種常用操作,幫助你在管理集群時應對各種場景。

目錄

  1. Kubernetes 基本概念
  2. 集群操作
    • 查看節點信息
    • 管理節點
  3. Pod 的基本操作
    • 創建 Pod
    • 查看 Pod
    • 刪除 Pod
  4. Service 操作
    • 創建 Service
    • 查看 Service
  5. Deployment 的操作
    • 創建 Deployment
    • 更新和回滾 Deployment
    • 縮容和擴容 Deployment
  6. 使用 ConfigMap 和 Secret
  7. 管理 Namespaces
  8. Helm 基本操作
  9. Kubernetes 日常排錯與調試
  10. 小結

1. Kubernetes 基本概念

Kubernetes 是用于自動部署、擴展和管理容器化應用程序的平臺。它包括以下核心概念:

  • Node:Kubernetes 集群中的一個節點(物理或虛擬機)。
  • Pod:Kubernetes 中最小的部署單元,一個 Pod 通常包含一個或多個容器。
  • Service:用于將請求路由到 Pod 的負載均衡器。
  • Deployment:用于聲明和管理應用的部署方式。

2. 集群操作

2.1 查看節點信息

要查看 Kubernetes 集群中所有節點的信息,可以使用以下命令:

kubectl get nodes
  • 顯示集群中所有節點的狀態和相關信息。
2.2 管理節點
  • 標記節點:可以為節點添加標記,以便調度器做出調度決策。例如:

    kubectl label nodes <node-name> disktype=ssd
    
  • 污點節點:標記節點為不可調度,防止新的 Pod 被調度到該節點上:

    kubectl taint nodes <node-name> key=value:NoSchedule
    

3. Pod 的基本操作

3.1 創建 Pod

可以通過編寫 YAML 文件或直接使用命令創建 Pod。以下是通過 YAML 創建 Pod 的示例文件 pod.yaml

apiVersion: v1
kind: Pod
metadata:name: nginx-podlabels:app: nginx
spec:containers:- name: nginximage: nginx:1.21ports:- containerPort: 80

使用以下命令應用 YAML 文件:

kubectl apply -f pod.yaml
3.2 查看 Pod
  • 列出所有 Pod

    kubectl get pods
    
  • 獲取 Pod 的詳細信息

    kubectl describe pod <pod-name>
    
3.3 刪除 Pod

要刪除一個 Pod,可以使用 delete 命令:

kubectl delete pod <pod-name>

4. Service 操作

4.1 創建 Service

Service 允許不同 Pod 之間相互通信,或暴露應用程序以供外部訪問。以下是創建一個 ClusterIP 類型 Service 的 YAML 文件 service.yaml

apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: ClusterIP

使用以下命令應用 YAML 文件:

kubectl apply -f service.yaml
4.2 查看 Service
  • 列出所有 Service

    kubectl get services
    
  • 查看特定 Service 的詳細信息

    kubectl describe service <service-name>
    

5. Deployment 的操作

5.1 創建 Deployment

Deployment 是用于管理應用程序的聲明式更新。以下是創建一個 Nginx Deployment 的 YAML 文件 deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.21ports:- containerPort: 80

使用以下命令創建 Deployment:

kubectl apply -f deployment.yaml
5.2 更新和回滾 Deployment
  • 滾動更新

    kubectl set image deployment/nginx-deployment nginx=nginx:1.22
    
  • 回滾 Deployment

    kubectl rollout undo deployment/nginx-deployment
    
5.3 縮容和擴容 Deployment
  • 擴容至 5 個副本

    kubectl scale deployment/nginx-deployment --replicas=5
    

6. 使用 ConfigMap 和 Secret

ConfigMapSecret 用于管理配置數據和敏感信息。

  • 創建 ConfigMap

    kubectl create configmap my-config --from-literal=key1=value1
    
  • 創建 Secret

    kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secret
    

7. 管理 Namespaces

Namespaces 用于將集群中的資源分隔開,以便更好地管理和隔離。

  • 查看所有 Namespaces

    kubectl get namespaces
    
  • 創建 Namespace

    kubectl create namespace mynamespace
    
  • 刪除 Namespace

    kubectl delete namespace mynamespace
    

8. Helm 基本操作

Helm 是 Kubernetes 的包管理工具,用于簡化應用的部署。

  • 安裝 Chart

    helm install my-release stable/nginx
    
  • 列出所有 Release

    helm list
    
  • 卸載 Release

    helm uninstall my-release
    

9. Kubernetes 日常排錯與調試

  • 查看 Pod 日志

    kubectl logs <pod-name>
    
  • 進入 Pod 進行調試

    kubectl exec -it <pod-name> -- /bin/bash
    
  • 查看事件:查看集群中的所有事件,以排查可能的問題。

    kubectl get events
    

10. 小結

本文詳細介紹了 Kubernetes 的各種常用操作,從基礎的 節點管理Pod 操作,到進階的 Deployment 管理Service 配置ConfigMap 和 Secret 使用,以及 Helm 的基本用法。掌握這些操作,能夠幫助開發者和運維人員在日常工作中更加高效地管理 K8s 集群。

Kubernetes 的豐富功能使得容器編排變得高效而靈活,但也對用戶提出了更高的要求。熟練使用這些操作命令,可以讓你在日常維護和調試 Kubernetes 集群時更加得心應手,為企業提供穩定和高效的容器管理服務。

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

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

相關文章

sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)

1. MySQL 條件 數據庫用戶需要具備高權限&#xff08;如 FILE 權限&#xff09;。數據庫服務運行用戶需要對目標目錄有寫權限。Web 服務器有可寫目錄&#xff0c;且支持執行上傳的腳本&#xff08;如 PHP、JSP 等&#xff09;。 原理 利用 MySQL 的 SELECT ... INTO OUTFIL…

Springboot 2.x 升級到Springboot 2.7.x問題匯總

Springboot 2.x 升級到Springboot 2.7.x問題 Springboot 2.x 升級到Springboot 2.7.x問題匯總 不廢話 上干貨 改變 1.mysql依賴groupId和artifactId更改&#xff1b; <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</…

【計算機網絡】實驗13:運輸層端口

實驗13 運輸層端口 一、實驗目的 本次實驗旨在驗證TCP和IP運輸層端口號的作用&#xff0c;深入理解它們在網絡通信中的重要性。通過實驗&#xff0c;我將探討端口號如何幫助區分不同的應用程序和服務&#xff0c;使得在同一臺主機上能夠同時運行多個網絡服務而不發生沖突。此…

【Redis】Redis基礎——Redis的安裝及啟動

一、初識Redis 1. 認識NoSQL 數據結構&#xff1a;對于SQL來說&#xff0c;表是有結構的&#xff0c;如字段約束、字段存儲大小等。 關聯性&#xff1a;SQL 的關聯性體現在兩張表之間可以通過外鍵&#xff0c;將兩張表的數據關聯查詢出完整的數據。 查詢方式&#xff1a; 2.…

vuex 是什么?怎么使用?哪種功能場景使用它?

Vuex是Vue.js的狀態管理庫。它可以用來管理應用程序中的共享狀態&#xff0c;并提供了一種集中式的方式來管理狀態的變化。 使用Vuex&#xff0c;首先需要安裝它&#xff1a; npm install vuex --save然后&#xff0c;在Vue應用程序的入口文件中&#xff0c;導入Vuex并在Vue實…

ElK 8 收集 MySQL 慢查詢日志并通過 ElastAlert2 告警至飛書

文章目錄 1. 說明2. 啟個 mysql3. 設置慢查詢4. filebeat 設置5. 觸發慢查詢6. MySQL 告警至飛書 1. 說明 elk 版本&#xff1a;8.15.0 2. 啟個 mysql docker-compose.yml 中 mysql&#xff1a; mysql:# restart: alwaysimage: mysql:8.0.27# ports:# - "3306:3306&q…

PyTorch基本使用-張量的索引操作

在操作張量時&#xff0c;經常要去獲取某些元素進行處理或者修改操作&#xff0c;在這里需要了解torch中的索引操作。 準備數據&#xff1a; data torch.randint(0,10,[4,5]) print(data--->,data)輸出結果&#xff1a; data---> tensor([[3, 9, 4, 0, 5],[7, 5, 9, …

【服務器監控】grafana+Prometheus+node exporter詳細部署文檔

我們在進行測試時&#xff0c;不可能一直手動看著服務器的性能消耗&#xff0c;這時候就需要有個工具替我們監控服務器的性能消耗。這里記錄下grafanaPrometheusnodeExporter的組合用于監控服務器。 簡單介紹&#xff1a; grafana&#xff1a;看板工具&#xff0c;所有采集的…

第十七章 使用 MariaDB 數據庫管理系統

1. 數據庫管理系統 數據庫是指按照某些特定結構來存儲數據資料的數據倉庫。在當今這個大數據技術迅速崛起的年代&#xff0c;互聯網上每天都會生成海量的數據信息&#xff0c;數據庫技術也從最初只能存儲簡單的表格數據的單一集中存儲模式&#xff0c;發展到了現如今存儲海量…

Jenkins授權策略的配置

簡介:在Jenkins中,通過系統管理下的“Manage and Assign Roles”以及“Manage Roles”來配置角色,是實現權限管理的關鍵步驟。以下是關于這兩個功能配置角色時的意義及注意事項的詳細解釋: 一、配置角色的意義 實現權限控制: 通過創建和分配角色,可以精確地控制不同用戶…

centos 7.9 安裝jdk1.8 mysql redis等

環境&#xff1a; centos 7.9 1、安裝OpenJDK 1.8 步驟 1: 更新系統 首先&#xff0c;確保你的系統是最新的&#xff0c;執行以下命令來更新所有軟件包&#xff1a; sudo yum update -y步驟 2: 安裝 OpenJDK 1.8 CentOS 7 默認的包管理器是 yum&#xff0c;你可以通過以下命…

計算機鍵盤的演變 | 鍵盤鍵名稱及其功能 | 鍵盤指法

注&#xff1a;本篇為 “鍵盤的演變及其功能” 相關幾篇文章合輯。 英文部分機翻未校。 The Evolution of Keyboards: From Typewriters to Tech Marvels 鍵盤的演變&#xff1a;從打字機到技術奇跡 Introduction 介紹 The keyboard has journeyed from a humble mechanical…

Methods and Initializers

1 Method Declarations 這回不從comipler開始&#xff0c;從runtime開始。 GC也需要follow 接下來難點在于如何填充這些表 2 Compiling method declarations 難點&#xff1a; 一個類可以聲明任意數量的方法。運行時需要查找并綁定所有這些方法。如果將這些方法都打包到一條…

飛飛5.4游戲源碼(客戶端+服務端+工具完整源代碼+5.3fix+5.4patch+數據庫可編譯進游戲)

飛飛5.4游戲源碼&#xff08;客戶端服務端工具完整源代碼5.3fix5.4patch數據庫可編譯進游戲&#xff09; 下載地址&#xff1a; 通過網盤分享的文件&#xff1a;【源碼】飛飛5.4游戲源碼&#xff08;客戶端服務端工具完整源代碼5.3fix5.4patch數據庫可編譯進游戲&#xff09; 鏈…

開源C代碼之路:一、Gitee

開源c代碼之路&#xff1a;一&#xff0c;Gitee 前言1、開源項目2、從哪里找&#xff1f;3、舉個例子4、總結&#xff1a; 本系列回顧清單開源代碼示例 前言 從開源開發的角度&#xff0c;由淺入深&#xff0c;一步步初探C語言編程的入門之路。 本篇講解&#xff1a;Gitee 1…

基于協同過濾算法的寵物用品商城的設計與實現(計算機畢業設計)Java Spring 衍生為任何商城系統 畢業論文

系統合集跳轉 源碼獲取鏈接 一、系統環境 運行環境: 最好是java jdk 1.8&#xff0c;我們在這個平臺上運行的。其他版本理論上也可以。 IDE環境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat環境&#xff1a; Tomcat 7.x,8.x,9.x版本均可 操作系統…

算法-字符串-165.比較版本號

一、題目 二、思路解析 1.思路&#xff1a; 比較的是兩個版本號它們以“.”作為分割的部分的有效值&#xff08;即數值&#xff09;是否一致 2.常用方法&#xff1a; 1.s.split("\\規則")&#xff0c;將字符串按參數規則進行分割并存儲在字符串數組中 String[] str …

MySQL(四)--索引

MySQL的服務器,本質是在內存中的,那么所有對數據的CURD操作,全都是在對內存進行操作。 而,提高數據的CURD操作的效率,有兩種方式:1、組織數據的格式(數據結構);2、算法。 而,數據結構,就是索引,即組織數據的格式。 1、沒有索引的問題 索引:提高數據庫的性能,索…

C# (WinForms) 使用 iTextSharp 庫將圖片轉換為 PDF

iTextSharp簡介 iTextSharp 是一個開源的 .NET 庫&#xff0c;主要用于創建和操作 PDF 文檔。它是 iText 的 .NET 版本&#xff0c;iText 是一個廣泛使用的 Java 庫。iTextSharp 繼承了 iText 的核心功能并進行了適應 .NET 平臺的調整。 iTextSharp 的主要功能包括&#xff1a…

ubuntu防火墻設置(四)——iptables語法與防火墻基礎配置

前面介紹的ufw和firewall-config均為iptables的前端&#xff0c; 分別適合個人用戶和服務器網絡管理 下面介紹底層——ipables iptables是一個強大的工具&#xff0c;用于配置Linux系統的防火墻。以下是一些基本的使用方法和示例&#xff0c;幫助您入門&#xff1a; 基本語法 …