【kubernetes】k8s的面試寶典,等你來拿哦

目錄

一、pod的生命周期

二、創建 pod 的工作流程

三、ingres 有哪些組件并且描述出組件作用 ?

四、ingress 的工作原理

五、ingress 暴露服務的方式

六、pod 的組成

七、pod的本身性質(pod的種類與說明)

八、k8s命令

8.1在k8s中如何查看命名空間nanjing中的pod的IP

8.2k8s 中pod無法啟動怎么排查原因?

九、K8S 核心組件有哪些?功能是什么?

十、k8s 工作流程? (創建nginx 模版為例)


一、pod的生命周期

收到kubectl指令-->初始化容器(init container),生成文件(init可以有多個,但是不可以同時運行)-->創建容器成功-->start容器-->readnessProbe(就緒性探針:就緒檢測--> liveness Probe (存活性探針):生存檢測-->stop容器?

① Pause 階段:當 Pod 中的容器被暫停時,Pod 會進入 Pause 階段。這通常發生在節點上發生調度變化時,為了確保容器狀態的一致性,Pod 會被暫停并且等待恢復。

② Init 階段:如果 Pod 中定義了 Init 容器,那么在主容器啟動之前,Init 容器會先啟動并執行其初始化任務。Pod 進入 Init 階段直到所有 Init 容器都成功完成。

③應用啟動階段:一旦所有的 Init 容器成功完成,主容器將會啟動并開始執行應用程序。

④ 存活階段:Pod 中的容器正在運行,并且沒有出現致命錯誤,此時 Pod 處于存活狀態。

⑤? 就緒階段:Pod 中的容器已經準備好接收流量。如果 Pod 中的所有容器都已經就緒,那么整個 Pod 就處于就緒狀態,可以開始接收請求。

二、創建 pod 的工作流程

kubectl ->auth -> apiserver?
apiserver -> etcd?
scheduler/controller manager watch apiserver (create pod 的事件)
shceduler 發送list 給apiserver -> etcd 獲取后端節點信息
以此來進行預選優選 -> 將結果返回給api-server?
controller 來一輪以上的
kubelet watch api-server 發現create Pod 創建事件,獲取創建pod所需資源與策略
kubelet 與cri 接口交互,調用docker 完成容器創建,并且調用控制器資源,完成Pod 創建?
kubelet 通過metrics 監控、采集本地節點的資源狀態信息 ——>周期性報告給api-server?
api-server 再將信息寫入etcd中

三、ingres 有哪些組件并且描述出組件作用 ?

Ingress 包含兩大組件:Ingress Controller 和 Ingress

  • Ingress Controller 會根據定義的 Ingress 對象,提供對應的代理能力。業界常用的各種反向代理項目,比如 Nginx、HAProxy、Envoy、Traefik 等,都已經為Kubernetes 專門維護了對應的 Ingress Controller
  • ?Ingress 控制器不同于Deployment 控制器的是,Ingress控制器不直接運行為kube-controller-manager的一部分,它僅僅是Kubernetes集群的一個附件,類似于CoreDNS,需要在集群上單獨部署

四、ingress 的工作原理

  • ingress-controller是接受用戶請求并且轉發,外界看ingress-controller是轉發給pod的,? ?其實并不是,而是轉發到service上面,他是通過讀取ingress-controller通過和 kubernetes APIServer 交互, ingress配置文件會保存在etcd當中并且ingress也配置定制了哪個域名發送到哪個service當中,
  • 然后會生成一個nginx配置,并且他會寫入到運行的控制器的pod當中。在pod當中會實現nginx服務以及導入到nginx配置文件中nginx.conf
  • ?然后reload加載,此時此刻控制器就知道了這個域名該轉發到哪個service---endpoints(里面是不是有很多端點),
  • 然后再由我們的service請求轉到相應關聯操作的pod上面,所以說對外界來看是ingress來轉發的,實際上并不是,而是用戶把請求轉發給ingress-controller控制器, ?根據ingress的資源配置找到所對應的service? ,然后再由service轉發到pod

五、ingress 暴露服務的方式

  • 方式一:Deployment+LoadBalancer 模式的 Service

如果要把ingress部署在公有云,那用這種方式比較合適。用Deployment部署ingress-controller,創建一個 type為 LoadBalancer 的 service 關聯這組 pod。大部分公有云,都會為 LoadBalancer 的 service 自動創建一個負載均衡器,通常還綁定了公網地址。 只要把域名解析指向該地址,就實現了集群服務的對外暴露

  • 方式二:DaemonSet+HostNetwork+nodeSelector

用DaemonSet結合nodeselector來部署ingress-controller到特定的node上,然后使用HostNetwork直接把該pod與宿主機node的網絡打通,直接使用宿主機的80/433端口就能訪問服務。這時,ingress-controller所在的node機器就很類似傳統架構的邊緣節點,比如機房入口的nginx服務器。該方式整個請求鏈路最簡單,性能相對NodePort模式更好。缺點是由于直接利用宿主機節點的網絡和端口,一個node只能部署一個ingress-controller pod。 比較適合大并發的生產環境使用。

  • 方式三:Deployment+NodePort模式的Service

同樣用deployment模式部署ingress-controller,并創建對應的service,但是type為NodePort。這樣,ingress就會暴露在集群節點ip的特定端口上。由于nodeport暴露的端口是隨機端口,一般會在前面再搭建一套負載均衡器來轉發請求。該方式一般用于宿主機是相對固定的環境ip地址不變的場景。
NodePort方式暴露ingress雖然簡單方便,但是NodePort多了一層NAT,在請求量級很大時可能對性能會有一定影響。

六、pod 的組成

① Pod 中有幾種容器
init 初始化 ,阻塞主容器運行,初始化后方可運行主容器
pause 基礎容器: 提供network 的 namespace 和 共享存儲
業務容器: 跑Pod 主應用?
(POD中跑什么:微服務、數據庫、監控、日志分析、mq、業務網關-類似Nginx的功能 SDK WSGI CGI等接口或協議的支持)

② Pod內網絡環境
共享形式,類似于docker-container 模式 ? 通過localhost 通訊

七、pod的本身性質(pod的種類與說明)

① 自主式pod:沒有自愈能力( Pod被刪除后不會重啟拉起新的pod)

② 控制器管理的pod:有自愈能力( Pod被刪除后會重啟拉起新的pod)

八、k8s命令

8.1在k8s中如何查看命名空間nanjing中的pod的IP

kubectl get pods -n nanjing -o wide

8.2k8s 中pod無法啟動怎么排查原因?

kubectl describe pod

kubectl logs

九、K8S 核心組件有哪些?功能是什么?

  • api-server :所有請求都經過該組件,負責整個K8S 集群的協調、交互
  • scheduler ?:為集群資源提供指向調度能力,分為默認調度、節點標簽調度、親和反親和、污點容忍等調度方式
  • etcd ?:記錄K8S集群中所有集群資源信息
  • controller manager? :負責控制器資源管理的組件
  • kubelet? :節點的核心代理?負責與api-server 交互(watch api-server的事件)具體執行于節點,并周期統計節點資源信息,返回給api-server?
  • kube-proxy :K8S 集群中L4負載均衡、反向代理的組件

十、k8s 工作流程? (創建nginx 模版為例)

  • 首先要明確有kubernetes環境,然后啟動之后,master和node都會將自身的信息存儲到etcd數據庫中
  • kubectl 首先創建命令 nginx服務 --> 他的安裝請求會到->auth(認證)-->?然后被發送到master節點的apiServer(資源操作的唯一入口)組件
  • apiServer組件會調用scheduler組件(負責集群資源調度)來決定到底應該把這個服務安裝到哪個node節點上,在此時,它會從etcd中讀取各個node節點的信息,然后按照一定的算法進行選擇,并將結果告知apiServer
  • apiServer調用controller-manager(負責維護集群的狀態)去調度Node節點安裝nginx服務
  • kubelet(負責維護容器的生命周期)接收到指令后,會通知docker,然后由docker來啟動一個nginx的pod,pod是kubernetes的最小操作單元,容器必須跑在pod中至此,
  • 一個nginx服務就運行了,如果需要訪問nginx,就需要通過kube-proxy(負責提供集群內部的服務發現和負載均衡)來對pod產生訪問的代理

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

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

相關文章

零基礎入門學習Python第二階04SQL詳解03

MySQL 新特性 JSON類型 很多開發者在使用關系型數據庫做數據持久化的時候,常常感到結構化的存儲缺乏靈活性,因為必須事先設計好所有的列以及對應的數據類型。在業務發展和變化的過程中,如果需要修改表結構,這絕對是比較麻煩和難…

AppStore搜索優化方法(ASO)

在競爭激烈的 App Store 中,如何讓你的應用脫穎而出,吸引更多用戶下載?其實從官方文檔描述中可以總結一些優化技巧,這是官方描述地址:搜索優化 – App Store – Apple Developer。通過官方描述我們可以總結到影響搜索結…

commander.js 入門指南:構建強大的命令行界面 (全網最全教程)

在Node.js的世界里,創建用戶友好的命令行界面(CLI)對于許多應用程序和工具來說至關重要。Commander.js 是一個廣受歡迎的 Node.js 包,它為開發者提供了一套簡潔而強大的 API,用于快速創建功能完備、用戶友好的命令行界…

如何用TCC方案輕松實現分布式事務一致性

本文作者:小米,一個熱愛技術分享的29歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術干貨! 哈嘍,大家好!我是小米,一個熱愛技術的活力小青年,今天要和大家分享的是一種在分布式系統中實現事務的一種經典方案——TCC(Try Confirm Canc…

【Ubuntu】超詳細安裝Ubuntu系統

鑒于有些小伙伴在安裝Ubuntu系統的時候遇到很多問題,因此打算編寫一篇記錄一下安裝Ubuntu系統的整個過程~互相學習! 一、制作U盤啟動 準備一個大于8G以上的U盤,這里我使用的是16G的U盤下載UltraISO工具 網站地址:UltraISO準備Ub…

C++ Primer 第五版 第15章 面向對象程序設計

面向對象程序設計基于三個基本概念:數據抽象、繼承和動態綁定。 繼承和動態綁定對編寫程序有兩方面的影響:一是我們可以更容易地定義與其他類相似但不完全相同的新類;二是在使用這些彼此相似的類編寫程序時,我們可以在一定程度上…

HTML靜態網頁成品作業(HTML+CSS)—— 金寶貝兒童教育機構介紹網頁(2個頁面)

🎉不定期分享源碼,關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 🏷?本套采用HTMLCSS,未使用Javacsript代碼,共有2個頁面。 二、作品演示 三、代…

Stable diffusion prompts 使用語法、參數講解、插件安裝教程

Stable diffusion prompts 使用語法、參數講解、插件安裝教程 本文基于 Stable diffusion WebUI 進行講解(安裝在 AutoDL 上,安裝在本地電腦上的也同樣適用本教程)。 初始界面: 文件目錄結構: 上圖紅框中的 4 個文件…

requests模塊編寫漏洞檢測工具

#嘗試使用python登錄pikachu爆破模塊 #發送post數據包,包含用戶名密碼,對接受到的響應進行判斷,如何為登錄成功 #爆破密碼 with open(passwor.txt,r) as f: passwordf.readlines() for i in password: data {username: admin, password: i, …

數據結構——算法和算法效率的度量

目錄 一、引言 二、算法 1 算法的基本概念 2 算法的復雜度 2.1 時間復雜度 2.1.1 概念 2.1.2 大O的漸進表示 3 算法的空間復雜度 3.1 概念 3.2 實例 4 實例分析 5 結論 一、引言 大家在寫代碼的時候有沒有發現寫同樣功能的代碼有多種不同的寫法,而不同的代…

51種企業應用架構模式詳解

01 什么是企業應用 我的職業生涯專注于企業應用,因此,這里所談及的模式也都是關于企業應用的。(企業應用還有一些其他的說法,如“信息系統”或更早期的“數據處理”。)那么,這里的“企業應用”具體指的是什…

[原型資源分享]經典產品餓了么UI模版部件庫

?部件庫預覽鏈接:https://f13gm0.axshare.com 支持版本: Axrure RP 8 文件大小: 3MB 文檔內容介紹 基本部件:表單樣式:12款、數據樣式:10款、服務樣式:6款、導航:5款、業務組件:7款、 模板…

python把簡體中文轉換為繁體中文

Python 可以使用第三方庫來將簡體中文(簡體中文)轉換為繁體中文(繁體中文)。一個常用的庫是 opencc-python-reimplemented,它是 Open Chinese Convert (OpenCC) 的 Python 實現,OpenCC 是一個開源的中文簡繁…

MySQL之查詢性能優化(三)

查詢性能優化 重構查詢的方式 在優化有問題的查詢時,目標應該是找到一個更優的方法獲得實際需要的記過——而不是一定總是需要從MySQL獲取一模一樣的結果集。有時候,可以將查詢轉換一種寫法讓其返回一樣的結果,但是性能更好。但也可以通過修…

Python魔法之旅-魔法方法(14)

目錄 一、概述 1、定義 2、作用 二、應用場景 1、構造和析構 2、操作符重載 3、字符串和表示 4、容器管理 5、可調用對象 6、上下文管理 7、屬性訪問和描述符 8、迭代器和生成器 9、數值類型 10、復制和序列化 11、自定義元類行為 12、自定義類行為 13、類型檢…

在Debian系統上賦予普通用戶ping 權限

在Debian系統上,普通用戶默認情況下沒有權限使用 ping 命令,因為它需要發送 ICMP 包,這通常需要 root 權限。為了允許普通用戶使用 ping,可以設置 ping 命令的 setuid 位。以下是具體的步驟: 查找 ping 命令的位置&am…

2024年度自貢市社會民生重大科技計劃項目申報要求、時間流程

一、申報要求 申報項目需符合以下申報要求和申報指南要求,申報資料需在“自貢市科技綜合業務服務平臺”中的“自貢市重點科技計劃項目管理系統”上傳。 (一)項目申報單位要求。 1.項目申報單位包括項目牽頭單位和項目合作單位。 2.多家單…

【Python】pyinstaller打包時添加詳細信息

在要被打包的py文件同級目錄新建version.txt,寫入以下內容 # UTF-8 # # For more details about fixed file info ffi see: # http://msdn.microsoft.com/en-us/library/aa381058.aspx # VSVersionInfo(ffiFixedFileInfo(filevers(1, 4, 0, 5),prodvers(1, 4, 0, 5…

SpringBoot使用RabbitMQ實現延遲隊列

SpringBoot使用RabbitMQ實現延遲隊列 需求和目標名詞解釋實現方式引入依賴添加配置文件配置類死信隊列消費者即時隊列消費者延遲消息發送結果注意 需求和目標 商城系統,用戶下單后若15分鐘內仍未完成支付,則自動取消訂單,若已支付&#xff0c…

重組蛋白的定量定性方法,你了解嗎?

重組蛋白的定量和定性分析是蛋白質工程和生物技術中至關重要的步驟,用于確保蛋白質的表達、純度和功能性符合預期。以下是小編整理的一些常用的方法以及實驗介紹,希望這些方法幫助研究人員詳細了解重組蛋白的特性。 主要的定性方法 1 WB(Wes…