Linux運維工程師面試題(8)

来源:https://www.cnblogs.com/waluna/archive/2023/09/06/17683220.html
-Advertisement-
Play Games

[toc] # Linux運維工程師面試題(8) > 祝各位小伙伴們早日找到自己心儀的工作。 > 持續學習才不會被淘汰。 > 地球不爆炸,我們不放假。 > 機會總是留給有有準備的人的。 > 加油,打工人! ## 1 docker 的網路類型,使用場景 - none:在使用none模式後,Docker ...


目錄

Linux運維工程師面試題(8)

祝各位小伙伴們早日找到自己心儀的工作。
持續學習才不會被淘汰。
地球不爆炸,我們不放假。
機會總是留給有有準備的人的。
加油,打工人!

1 docker 的網路類型,使用場景

  • none:在使用none模式後,Docker容器不會進行任何網路配置,沒有網卡、沒有IP也沒有路由,因此預設無法與外界通信,需要手動添加網卡配置IP等,所以極少使用。
  • bridge:預設模式。可以和外部網路之間進行通信,通過SNAT訪問外網,使用DNAT可以讓容器被外部主機訪問,所以此模式也稱為NAT模式。
  • host:此模式由於直接使用宿主機的網路無需轉換,網路性能最高,但是各容器內使用的埠不能相同,適用於運行容器埠比較固定的業務。
  • container:使用此模式創建的容器需指定和一個已經存在的容器共用一個網路,而不是和宿主機共用網,新創建的容器不會創建自己的網卡也不會配置自己的IP,而是和一個被指定的已經存在的容器共用IP和埠範圍,因此這個容器的埠不能和被指定容器的埠衝突,除了網路之外的文件系統、進程信息等仍然保持相互隔離,兩個容器的進程可以通過lo網卡進行通信。

2 CMD 和 ENTRYPOINT 的區別

No ENTRYPOINT ENTRYPOINT exec_entry p1_entry ENTRYPOINT [“exec_entry”, “p1_entry”]
No CMD error, not allowed /bin/sh -c exec_entry p1_entry exec_entry p1_entry
CMD [“exec_cmd”, “p1_cmd”] exec_cmd p1_cmd /bin/sh -c exec_entry p1_entry exec_entry p1_entry exec_cmd p1_cmd
CMD exec_cmd p1_cmd /bin/sh -c exec_cmd p1_cmd /bin/sh -c exec_entry p1_entry exec_entry p1_entry /bin/sh -c exec_cmd p1_cmd

3 怎麼減小 dokcer 鏡像的大小

  1. 儘量選取滿足需求但較小的基礎系統鏡像;
  2. 清理編譯生成的文件、安裝包的緩存等臨時文件;
  3. 安裝各個軟體時候要指定准確的版本號、並避免引入不需要的依賴;
  4. 減少鏡像層數,合併相同的命令,比如RUN命令;
  5. 使用 Dockerfile 創建鏡像時候要添加 dockerignore 文件或使用乾凈的工具目錄;

4 現有一個正在運行的容器,容器中沒有 ps、top、netstat、ss、ip、lsof等命令,怎麼查看容器內進程及pid和打開的埠

可以使用 docker ps 命令查看容器內進程的和port。也可以使用 docker top 命令查看容器內的相關進程,包括它們的PID和其它信息。可以使用docker port命令查看容器暴露的埠。

也可以進入容器。在/proc目錄下查看進程pid和其他信息。
下麵是/proc/pid目錄中可能包含的文件和目錄的一些例子:

  • cmdline:該文件包含了進程啟動時的完整命令行參數。
  • cwd:該文件包含了進程當前的工作目錄。
  • environ:該文件包含了進程環境變數列表。
  • exe:該文件是進程的可執行文件的符號鏈接,可以通過它來找到進程的可執行文件。
  • fd:該目錄包含了進程打開的文件列表,每個文件都以符號鏈接的形式出現在該目錄下。

5 如何臨時退出⼀個正在交互的容器的終端,而不終止它?

同時按三個鍵,ctrl+p+q。如果按Ctrl+c 會使容器內的應用進程終止、進而會使容器終止。

6 如果只有鏡像或者在運行的容器,沒有 dockerfile,現在有需求需要藉助這個鏡像或容器重寫 dockerfile,怎麼查看這個鏡像或容器之前的構建過程。

使用docker history或者docker image history命令進行查看。也可以使用docker inspect命令查看相關信息。

7 COPY 和 ADD 的區別

  1. COPY 命令會將文件的所有元數據(如所有者、許可權等)都複製到容器中,而ADD則不會。這意味著在使用ADD時,您可能需要手動設置文件的元數據。
  2. ADD 命令支持在拷貝文件時自動解壓縮tar文件,而 COPY 不支持。
  3. ADD 命令支持將 URL 作為源文件,並自動下載並將其複製到容器中。

8 製作鏡像方式

  • docker commit # 通過修改現有容器,將之手動構建為鏡像
  • docker build # 通過Dockerfile文件,批量構建為鏡像

9 K8S 有那些組件,都是乾什麼用的

master:

  • kube-apiserver:API 伺服器為 REST 操作提供服務,公開 Kubernetes API,負責處理接受請求的工作。 併為集群的共用狀態提供前端, 所有其他組件都通過該前端進行交互。
  • kube-controller-manager:負責運行控制器進程,負責集群內的Node 、Pod 副本、服務端點( Endpoint )、命名空間(Namespace )、服務賬號( ServiceAccount )、資源定額( ResourceQuota )的管理,當某個 Node 意外宕機時, Controller Manager 會及時發現並執行自動化修複流程,確保集群始終處於預期的工作狀態。
  • kube-scheduler: 負責監視新創建的、未指定運行節點(node)的 Pods, 並選擇節點來讓 Pod 在上面運行。
  • etcd:一致且高可用的鍵值存儲,用作 Kubernetes 所有集群數據的後臺資料庫。

node:

  • kubelet:它保證容器(containers)都運行在 Pod 中。向 master 彙報 node 節點的狀態信息;接受指令併在 Pod 中創建 docker 容器;準備 Pod 所需的數據捲;返回 pod 的運行狀態;在 node 節點執行容器健康檢查
  • kube-proxy:集群中每個節點(node)上所運行的網路代理, 實現 Kubernetes 服務(Service) 概念的一部分。
  • 容器運行時(Container Runtime):容器運行環境是負責運行容器的軟體。

10 K8S 創建一個pod的流程

  1. 準備好對應的yaml文件,通過kubectl發送到Api Server中;
  2. Api Server接收到客戶端的請求將請求內容保存到etcd中;
  3. Scheduler會監測etcd,發現沒有分配節點的pod對象通過過濾和打分篩選出最適合的節點運行pod;
  4. 節點會通過conteiner runntime 運行對應pod的容器以及創建對應的副本數;
  5. 節點上的kubelet會對自己節點上的容器進行管理;
  6. controler會監測集群中的每個節點,發現期望狀態和實際狀態不符合的話,就會通知對應的節點;
  7. 節點收到通知,會通過container runtime來對pod內的容器進行收縮或者擴張。

關於我
全網可搜《阿賢Linux》
CSDN、知乎、嗶哩嗶哩、博客園、51CTO、掘金、思否、開源中國、阿裡雲、騰訊雲、華為雲、今日頭條、百家號、GitHub、個人博客
公眾號:阿賢Linux
個人博客:blog.waluna.top
https://blog.waluna.top/


原文鏈接: Linux運維工程師面試題(8).


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

-Advertisement-
Play Games
更多相關文章
  • [toc] | 說明 | 內容 | | | | | 漏洞編號 | CVE-2017-10271 | | 漏洞名稱 | Weblogic 其中使用了XMLDecoder來解析用戶傳入的XML數據在解析的過程中出現反序列化漏洞,導致可執行任意命令 | | 修複方案 | 打補丁上設備升級組件 | ### ...
  • # 前言 在園子吸收營養10多年,一直沒有貢獻,目前園子危機時刻,除了捐款+會員,也鼓起勇氣,發篇文助力一下。 2018年下半年,公司決定開發一款SaaS版行業供應鏈管理系統,經過選型,確定採用ABP(ASP.NET Boilerplate)框架。為了加快開發效率,購買了商業版的 ASP.NET Z ...
  • # .NET6.0實現IOC容器 `IOC`的作用這裡省略…只對如何使用進行說明。 ## 1. 創建一個.NET6應用程式 這裡使用` .NET6.0 WebAPI` 應用 ## 2. 聲明介面 ```c public interface IAuthService { bool CheckToken ...
  • ## 前言 【**橋接模式**】是【**結構型**】設計模式的第二個模式,也有叫【橋模式】的,英文名稱:**Bridge Pattern**。 大家第一次看到這個名稱會想到什麼呢?我第一次看到這個模式根據名稱猜肯定是連接什麼東西的。因為橋在我們現實生活中經常是連接著A地和B地,再往後來發展,橋引申為 ...
  • WPF(Windows Presentation Foundation)是一個用於構建客戶端應用程式的圖形界面庫,它提供了許多對象變形(Object Transformation)的功能。這些功能可以讓你輕鬆地改變對象的大小、位置和角度,以實現各種視覺效果。 以下是一些常用的 WPF 對象變形技術: ...
  • 1. 進程和線程的區別 進程(Process)和線程(Thread)是操作系統中的重要概念,它們表示執行中的程式的不同執行單元。下麵是它們的區別: 定義:進程是一個獨立的執行環境,具有獨立的記憶體空間,包含程式代碼、數據和執行狀態。線程是進程內的一個執行單元,共用相同的記憶體空間和系統資源。 資源占用: ...
  • >雙系統grub意外消失怎麼辦? 不用重裝系統、不用去維修店、不會丟數據,教你一招,完美恢復grub! ### 背景 我的電腦是windows和linux雙系統,啟動項使用的grub。某天準備切換linux時突然發現grub不見了。近期可疑操作有:更新BIOS、多次切換UEFI、添加第三方風扇管理軟 ...
  • 哈嘍大家好,我是鹹魚 昨天老大讓我初始化一批伺服器,吭哧吭哧弄完之後需要把這批機器添加到 zabbix 上去 但是我發現一臺一臺添加效率好低,而且特別繁瑣,當時我沒有想出有什麼好的方法,今天上網搜了一下相關資料之後,發現 zabbix 還有個自動發現功能 手動添加監控主機的效率會非常低下,而 Zab ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...