面試題整理9----談談對k8s的理解2

面試題整理9----談談對k8s的理解2

  • 1. Service 資源
    • 1.1 Service
      • ClusterIP
      • NodePort
      • LoadBalancer
      • Ingress
      • ExternalName
    • 1.2 Endpoints
    • 1.3 Ingress
    • 1.4 EndpointSlice
    • 1.5 IngressClass
  • 2. 配置和存儲資源
    • 2.1 ConfigMap
    • 2.2 Secret
    • 2.3 PersistentVolume
    • 2.4 PersistentVolumeClaim
    • 2.5 StorageClass
      • 2.5.1 PV,PVC,StorageClass之間的關系
    • 2.6 Volume
    • 2.7 CSIDriver
    • 2.8 CSINode
    • 2.9 CSIStorageCapacity
    • 2.10 StorageVersionMigration v1alpha1
  • 3. RBAC 鑒權資源
    • 3.1 Role和RoleBinding
      • 3.1.1 Role
      • 3.1.2 RoleBinding
      • 3.1.3 常見用例
    • 3.2 ClusterRole和ClusterRoleBinding
      • 3.2.1 ClusterRole
      • 3.2.2 ClusterRoleBinding
      • 3.2.3 常見用例
    • 3.3 LocalSubjectAccessReview
    • 3.4 SelfSubjectAccessReview
    • 3.5 SelfSubjectRulesReview
    • 3.6 SubjectAccessReview

1. Service 資源

1.1 Service

Service 是軟件服務(例如 mysql)的命名抽象,包含代理要偵聽的本地端口(例如 3306)和一個選擇算符,選擇算符用來確定哪些 Pod 將響應通過代理發送的請求。

Service幾種模式:

  • ClusterIP

適用于集群內部的服務間通信。

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-appports:- protocol: TCPport: 80targetPort: 8080
  • NodePort

適用于需要從集群外部通過node節點的映射訪問服務的場景。

api版version: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-apptype: NodePortports:- protocol: TCPport: 80targetPort: 8080nodePort: 30007
  • LoadBalancer

適用于需要從互聯網訪問服務的場景。

apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-apptype: LoadBalancerports:- protocol: TCPport: 80targetPort: 8080
  • Ingress

適用于需要基于路徑或主機名路由流量的場景。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-ingress
spec:rules:- host: my-app.comhttp:paths:- path: /pathType: Prefixbackend:service:name: my-serviceport:number: 80
  • ExternalName

將 Service 映射到一個外部名稱,通常是一個 DNS 名稱。適用于需要將 Kubernetes 服務與外部服務集成的場景。

apiVersion: v1
kind: Service
metadata:name: my-service
spec:type: ExternalNameexternalName: my-external-service.com

1.2 Endpoints

Endpoints 是實現實際服務的端點的集合。即是通過service發現的后端pods的集合.

1.3 Ingress

Ingress 是允許入站連接到達后端定義的端點的規則集合。

1.4 EndpointSlice

EndpointSlice 是實現某 Service 的端點的子集.

1.5 IngressClass

IngressClass 代表 Ingress 的類,被 Ingress 的規約引用

2. 配置和存儲資源

2.1 ConfigMap

ConfigMap 包含供 Pod 使用的配置數據。存儲非敏感的配置數據。如配置文件、環境變量等。

有2種方法可以加載configmap中的環境變量:

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenvFrom:- configMapRef:name: my-configmap

或者

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: MY_ENV_VARIABLEvalueFrom:configMapKeyRef:name: my-configmapkey: my-config-key

2.2 Secret

Secret 包含某些類別的秘密數據。 存儲敏感數據,并確保數據的安全性和訪問控制。如密碼、密鑰、證書等。

用戶名密碼的引用方式:

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imageenv:- name: DB_USERNAMEvalueFrom:secretKeyRef:name: my-secretkey: username- name: DB_PASSWORDvalueFrom:secretKeyRef:name: my-secretkey: password

證書文件的引用:

secret的導入

kubectl create secret tls my-tls-secret \--cert=path/to/tls.crt \--key=path/to/tls.key

pod中的引用

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imagevolumeMounts:- name: tls-certsmountPath: /app/tlsreadOnly: truevolumes:- name: tls-certssecret:secretName: my-tls-secret

2.3 PersistentVolume

PersistentVolume (PV) 是管理員制備的一個存儲資源。全局資源

2.4 PersistentVolumeClaim

PersistentVolumeClaim 是用戶針對一個持久卷的請求和申領。名稱空間資源

2.5 StorageClass

StorageClass 為可以動態制備 PersistentVolume 的存儲類描述參數。全局資源

2.5.1 PV,PVC,StorageClass之間的關系

  1. Storage Class:定義了一種存儲類型,包括存儲的類型、回收策略等。它允許動態創建 PV。
  2. Persistent Volume (PV):是集群中的一塊存儲資源,類似于一個物理磁盤。PV 可以是靜態創建的,也可以是通過 Storage Class 動態創建的。
  3. Persistent Volume Claim (PVC):是用戶對存儲資源的請求,類似于對 PV 的申請。PVC 可以綁定到一個 PV,從而使用該 PV 提供的存儲資源。

2.6 Volume

Volume 表示 Pod 中一個有名字的卷,可以由 Pod 中的任意容器進行訪問。

2.7 CSIDriver

CSIDriver 抓取集群上部署的容器存儲接口(CSI)卷驅動有關的信息。

2.8 CSINode

CSINode 包含節點上安裝的所有 CSI 驅動有關的信息。

2.9 CSIStorageCapacity

CSIStorageCapacity 存儲一個 CSI GetCapacity 調用的結果。

2.10 StorageVersionMigration v1alpha1

StorageVersionMigration 表示存儲的數據向最新存儲版本的一次遷移。

3. RBAC 鑒權資源

3.1 Role和RoleBinding

RoleRoleBinding 是 Kubernetes 中用于管理命名空間級別權限的兩個核心資源。它們與 ClusterRoleClusterRoleBinding 類似,但作用范圍僅限于特定的命名空間。

3.1.1 Role

Role 定義了一組在特定命名空間內的權限。你可以把它看作是一種命名空間級別的“角色”,它描述了哪些 API 組、資源類型以及操作可以被允許。

Role 示例:

  1. 查看特定命名空間中的 pods
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list"]
  1. 管理特定命名空間中的 ConfigMaps
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: configmap-admin
rules:
- apiGroups: [""]resources: ["configmaps"]verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

3.1.2 RoleBinding

RoleBindingRole 綁定到一個或多個用戶、組或服務賬戶上,從而授予這些實體在特定命名空間內的相應權限。你可以把它看作是一種命名空間級別的“角色綁定”。

RoleBinding 示例:

  1. pod-reader Role 綁定到特定用戶
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: read-podsnamespace: default
subjects:
- kind: Username: janeapiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io
  1. configmap-admin Role 綁定到一個服務賬戶
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: configmap-admin-bindingnamespace: default
subjects:
- kind: ServiceAccountname: configmap-admin-sa
roleRef:kind: Rolename: configmap-adminapiGroup: rbac.authorization.k8s.io

3.1.3 常見用例

  1. 命名空間管理員:創建一個具有特定命名空間內所有權限的 Role,并將其綁定到命名空間管理員用戶或組。

  2. 應用程序訪問控制:為應用程序創建一個 Role,允許它訪問和修改特定命名空間內的資源(如 pods、services、configmaps 等),并將其綁定到應用程序使用的服務賬戶。

  3. CI/CD 管道:為 CI/CD 管道創建一個 Role,允許它在特定命名空間內創建、更新和刪除部署、服務等資源,并將其綁定到 CI/CD 工具使用的服務賬戶。

  4. 多租戶環境:在多租戶環境中,為每個租戶創建一個獨立的命名空間,并為每個租戶分配一個 RoleRoleBinding,以限制他們對資源的訪問權限。

通過合理地使用 RoleRoleBinding,你可以實現細粒度的訪問控制,確保集群中各個命名空間的安全性和穩定性。

3.2 ClusterRole和ClusterRoleBinding

ClusterRoleClusterRoleBinding 是 Kubernetes 中用于管理集群級別權限的兩個核心資源。它們與 RoleRoleBinding 類似,但作用范圍是整個集群,而不僅僅是某個命名空間。

3.2.1 ClusterRole

ClusterRole 定義了一組跨集群范圍的權限。你可以把它看作是一種集群級別的“角色”,它描述了哪些 API 組、資源類型以及操作可以被允許。

ClusterRole 示例:

  1. 查看所有命名空間中的 pods
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list"]
  1. 管理集群中的所有 ConfigMaps
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: configmap-admin
rules:
- apiGroups: [""]resources: ["configmaps"]verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

3.2.2 ClusterRoleBinding

ClusterRoleBindingClusterRole 綁定到一個或多個用戶、組或服務賬戶上,從而授予這些實體相應的權限。你可以把它看作是一種集群級別的“角色綁定”。

ClusterRoleBinding 示例:

  1. pod-reader ClusterRole 綁定到特定用戶
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: read-pods
subjects:
- kind: Username: janeapiGroup: rbac.authorization.k8s.io
roleRef:kind: ClusterRolename: pod-readerapiGroup: rbac.authorization.k8s.io
  1. configmap-admin ClusterRole 綁定到一個服務賬戶
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: configmap-admin-binding
subjects:
- kind: ServiceAccountname: configmap-admin-sanamespace: kube-system
roleRef:kind: ClusterRolename: configmap-adminapiGroup: rbac.authorization.k8s.io

3.2.3 常見用例

  1. 集群管理員:創建一個具有所有權限的 ClusterRole,并將其綁定到集群管理員用戶或組。

  2. 監控和日志收集:為監控和日志收集工具創建一個 ClusterRole,允許它們讀取集群中的各種資源(如 pods、nodes、services 等),并將其綁定到相應的服務賬戶。

  3. CI/CD 管道:為 CI/CD 管道創建一個 ClusterRole,允許它創建、更新和刪除部署、服務等資源,并將其綁定到 CI/CD 工具使用的服務賬戶。

  4. 備份和恢復:為備份和恢復工具創建一個 ClusterRole,允許它讀取和修改持久卷、配置映射等資源,并將其綁定到備份和恢復工具使用的服務賬戶。

3.3 LocalSubjectAccessReview

LocalSubjectAccessReview 檢查用戶或組是否可以在給定的命名空間內執行某操作。

3.4 SelfSubjectAccessReview

SelfSubjectAccessReview 檢查當前用戶是否可以執行某操作。

3.5 SelfSubjectRulesReview

SelfSubjectRulesReview 枚舉當前用戶可以在某命名空間內執行的操作集合。

3.6 SubjectAccessReview

SubjectAccessReview 檢查用戶或組是否可以執行某操作。

至此對k8s的理解應該就差不多了.當然面試中不過不攔著可以繼續對K8s的監控,告警,日志,流量治理,CICD等各個面繼續深入闡述自己的理解.

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

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

相關文章

精準采集整車信號:風丘混合動力汽車工況測試

一 背景 混合動力汽車是介于純電動汽車與燃油汽車兩者之間的一種新能源汽車。它既包含純電動汽車無污染、啟動快的優勢,又擁有燃油車續航便捷、不受電池容量限制的特點。在當前環境下,混合動力汽車比純電動汽車更符合目前的市場需求。 然而&#xff0c…

帶標題和不帶標題的內部表

什么是工作區? 什么是工作區?簡單來說,工作區是單行數據。它們應具有與任何內部表相同的格式。它用于一次處理一行內部表中的數據。 內表和工作區的區別 ? 一圖勝千言 內表的類型 有兩種類型的內表: 帶 Header 行…

【圖像分類實用腳本】數據可視化以及高數量類別截斷

圖像分類時,如果某個類別或者某些類別的數量遠大于其他類別的話,模型在計算的時候,更傾向于擬合數量更多的類別;因此,觀察類別數量以及對數據量多的類別進行截斷是很有必要的。 1.準備數據 數據的格式為圖像分類數據集…

【Leetcode 每日一題】2545. 根據第 K 場考試的分數排序

問題背景 班里有 m m m 位學生,共計劃組織 n n n 場考試。給你一個下標從 0 0 0 開始、大小為 m n m \times n mn 的整數矩陣 s c o r e score score,其中每一行對應一位學生,而 s c o r e [ i ] [ j ] score[i][j] score[i][j] 表示…

React系列(八)——React進階知識點拓展

前言 在之前的學習中,我們已經知道了React組件的定義和使用,路由配置,組件通信等其他方法的React知識點,那么本篇文章將針對React的一些進階知識點以及React16.8之后的一些新特性進行講解。希望對各位有所幫助。 一、setState &am…

PCIe_Host驅動分析_地址映射

往期內容 本文章相關專欄往期內容,PCI/PCIe子系統專欄: 嵌入式系統的內存訪問和總線通信機制解析、PCI/PCIe引入 深入解析非橋PCI設備的訪問和配置方法 PCI橋設備的訪問方法、軟件角度講解PCIe設備的硬件結構 深入解析PCIe設備事務層與配置過程 PCIe的三…

【閱讀記錄-章節6】Build a Large Language Model (From Scratch)

文章目錄 6. Fine-tuning for classification6.1 Different categories of fine-tuning6.2 Preparing the dataset第一步:下載并解壓數據集第二步:檢查類別標簽分布第三步:創建平衡數據集第四步:數據集拆分 6.3 Creating data loa…

ip_output函數

ip_output函數是Linux內核(特別是網絡子系統)中用于發送IPv4數據包的核心函數。以下是一個示例實現,并附上詳細的中文講解: int ip_output(struct net *net, struct sock *sk, struct sk_buff *skb) {struct iphdr *iph; /* 構建IP頭部 */iph = ip_hdr(skb);/* 設置服務…

梳理你的思路(從OOP到架構設計)_簡介設計模式

目錄 1、 模式(Pattern) 是較大的結構?編輯 2、 結構形式愈大 通用性愈小?編輯 3、 從EIT造形 組合出設計模式 1、 模式(Pattern) 是較大的結構 組合與創新 達芬奇說:簡單是複雜的終極形式 (Simplicity is the ultimate form of sophistication) —Leonardo d…

用SparkSQL和PySpark完成按時間字段順序將字符串字段中的值組合在一起分組顯示

用SparkSQL和PySpark完成以下數據轉換。 源數據: userid,page_name,visit_time 1,A,2021-2-1 2,B,2024-1-1 1,C,2020-5-4 2,D,2028-9-1 目的數據: user_id,page_name_path 1,C->A 2,B->D PySpark: from pyspark.sql import SparkSes…

【libuv】Fargo信令2:【深入】client為什么收不到服務端響應的ack消息

客戶端處理server的ack回復,判斷鏈接連接建立 【Fargo】28:字節序列【libuv】Fargo信令1:client發connect消息給到server客戶端啟動后理解監聽read消息 但是,這個代碼似乎沒有觸發ack消息的接收: // 客戶端初始化 void start_client(uv_loop_t

硬盤dma讀寫過程

pci初始化時,遍歷pci上的設置,如果BaseClassCode1,則為大容量存儲控制器,包括硬盤控制器、固態硬盤控制器、光盤驅動控制器、RAID控制器等。 BaseAdder4為DMA控制器基地址,包含兩個控制器,主控制器&#x…

Python-基于Pygame的小游戲(貪吃蛇)(一)

前言:貪吃蛇是一款經典的電子游戲,最早可以追溯到1976年的街機游戲Blockade。隨著諾基亞手機的普及,貪吃蛇游戲在1990年代變得廣為人知。它是一款休閑益智類游戲,適合所有年齡段的玩家,其最初為單機模式,后來隨著技術發…

使用k6進行MongoDB負載測試

1.安裝環境 安裝xk6-mongo擴展 ./xk6 build --with github.com/itsparser/xk6-mongo 2.安裝MongoDB 參考Docker安裝MongoDB服務-CSDN博客 連接成功后新建test數據庫和sample集合 3.編寫腳本 test_mongo.js import xk6_mongo from k6/x/mongo;const client xk6_mongo.new…

solon 集成 activemq-client (sdk)

原始狀態的 activemq-client sdk 集成非常方便&#xff0c;也更適合定制。就是有些同學&#xff0c;可能對原始接口會比較陌生&#xff0c;會希望有個具體的示例。 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client&l…

2024 年最新前端ES-Module模塊化、webpack打包工具詳細教程(更新中)

模塊化概述 什么是模塊&#xff1f;模塊是一個封裝了特定功能的代碼塊&#xff0c;可以獨立開發、測試和維護。模塊通過導出&#xff08;export&#xff09;和導入&#xff08;import&#xff09;與其他模塊通信&#xff0c;保持內部細節的封裝。 前端 JavaScript 模塊化是指…

uni-app商品搜索頁面

目錄 一:功能概述 二:功能實現 一:功能概述 商品搜索頁面,可以根據商品品牌,商品分類,商品價格等信息實現商品搜索和列表展示。 二:功能實現 1:商品搜索數據 <view class="search-map padding-main bg-base"> <view class…

最小堆及添加元素操作

【小白從小學Python、C、Java】 【考研初試復試畢業設計】 【Python基礎AI數據分析】 最小堆及添加元素操作 [太陽]選擇題 以下代碼執行的結果為&#xff1f; import heapq heap [] heapq.heappush(heap, 5) heapq.heappush(heap, 3) heapq.heappush(heap, 2) heapq.…

10. 考勤信息

題目描述 公司用一個字符串來表示員工的出勤信息 absent:缺勤late: 遲到leaveearly: 早退present: 正常上班 現需根據員工出勤信息&#xff0c;判斷本次是否能獲得出勤獎&#xff0c;能獲得出勤獎的條件如下: 缺勤不超過一次&#xff0c;沒有連續的遲到/早退:任意連續7次考勤&a…

【計算機網絡】期末考試預習復習|中

作業講解 轉發器、網橋、路由器和網關(4-6) 作為中間設備&#xff0c;轉發器、網橋、路由器和網關有何區別&#xff1f; (1) 物理層使用的中間設備叫做轉發器(repeater)。 (2) 數據鏈路層使用的中間設備叫做網橋或橋接器(bridge)。 (3) 網絡層使用的中間設備叫做路…