「高頻必考」Docker&K8S面試題和答案

王中陽Go發表於2023-04-04

先送福利:Go如何自動解壓縮包?| 文末送書

Docker

如何在Docker容器內部訪問主機上的服務?

可以透過設定主機網路模式,使用--net=host引數來訪問主機上的服務。這樣,容器和主機將共享一個網路名稱空間,容器將可以直接訪問主機上的服務。

如何在Docker容器中執行多個程式?

Docker推薦每個容器只執行一個程式。如果需要在容器中執行多個程式,可以使用supervisord等程式管理工具來管理多個程式。

如何在Docker容器中使用環境變數?

可以透過在Dockerfile中使用ENV指令定義環境變數,或者使用docker run命令的-e選項來設定環境變數。在容器內部,可以使用$ENV_NAME的方式來引用環境變數。

如何在Docker容器中共享資料?

可以使用Docker資料捲來共享資料。資料卷是一個可以被容器內外訪問的特殊目錄,可以在docker run命令中使用-v選項來建立和掛載資料卷。

如何在Docker容器中安裝和使用ssh服務?

可以在Dockerfile中安裝openssh-server,然後啟動sshd服務。同時,需要在docker run命令中使用-p選項將容器內部的22埠對映到主機上的一個埠,以便可以透過ssh連線到容器。

如何在Docker容器中使用多個映象?

可以使用Docker Compose來組合多個映象。在Docker Compose配置檔案中,可以定義多個服務,每個服務對應一個映象,然後使用docker-compose up命令來啟動多個容器。

如何在Docker容器中執行GUI應用?

可以在Dockerfile中安裝圖形介面相關的軟體包,然後使用docker run命令的--env DISPLAY選項來設定顯示環境變數,再使用--volume選項將主機上的X11套接字檔案掛載到容器內部。這樣,就可以在容器中執行GUI應用了。

如何在Docker容器中限制CPU和記憶體使用?

可以使用docker run命令的--cpu-shares和--memory選項來限制CPU和記憶體使用。--cpu-shares選項可以設定CPU時間片的權重,--memory選項可以設定容器能夠使用的記憶體大小。

如何在Docker容器中設定時區?

可以在Dockerfile中安裝tzdata軟體包,然後使用docker run命令的-e選項設定TZ環境變數為所需時區,或者使用--volume選項將主機上的/etc/localtime檔案掛載到容器內部的相應位置。

如何在Docker容器中實現容器間通訊?

可以使用Docker網路來實現容器間通訊。Docker提供了多種網路模式,如預設的bridge網路、host網路、overlay網路等。可以使用docker network命令來建立和管理網路,並使用--network選項指定容器所屬的網路。在同一個網路中的容器可以直接透過容器名或IP地址相互訪問。

kubernetes

什麼是Kubernetes?

Kubernetes是一個用於自動部署、擴充套件和管理容器化應用程式的開源平臺。它提供了一個可擴充套件的、高可用的叢集,幷包含了自動化部署、負載平衡、儲存管理、自我修復、自動擴容等功能。

Kubernetes中的Pod是什麼?

Pod是Kubernetes中最小的部署單元,它包含一個或多個緊密耦合的容器和共享的儲存/網路資源。Pod提供了一種抽象層,使得容器可以在同一個主機上共享檔案系統、網路名稱空間等資源。

Kubernetes中的ReplicaSet是什麼?

ReplicaSet是一個用於管理Pod副本數量的控制器。它可以根據使用者定義的副本數量,自動調整Pod的數量,以保證應用程式的高可用性。

Kubernetes中的Service是什麼?

Service是Kubernetes中一個抽象的邏輯概念,用於暴露Pod的網路服務。Service可以將Pod的IP地址和埠對映到一個虛擬的IP地址和埠上,從而實現了Pod的負載均衡和服務發現功能。

Kubernetes中的Deployment是什麼?

Deployment是一個用於管理Pod部署的控制器。它可以自動建立和更新Pod,以便保持應用程式的可用性和可伸縮性。

Kubernetes中的ConfigMap和Secret是什麼?

ConfigMap是一個用於儲存應用程式配置資訊的物件,可以透過環境變數、命令列引數等方式使用。Secret是一個用於儲存敏感資訊(如密碼、金鑰等)的物件,可以加密儲存。

Kubernetes中的DaemonSet是什麼?

DaemonSet是一個用於在每個節點上執行一個Pod的控制器。它可以用於執行一些需要在每個節點上執行的系統級別的服務,如日誌收集、監控等。

Kubernetes中的StatefulSet是什麼?

StatefulSet是一個用於管理有狀態應用程式的控制器。它可以保證Pod的唯一性和有序性,從而實現有狀態應用程式的可靠性。

Kubernetes中的HorizontalPodAutoscaler是什麼?

HorizontalPodAutoscaler是一個用於自動擴充套件Pod數量的控制器。它可以根據應用程式的負載情況,自動調整Pod數量,以保證應用程式的效能和可用性。

Kubernetes中的CSI是什麼?

CSI(Container Storage Interface)是一個用於儲存管理的標準介面,它可以讓儲存提供商為Kubernetes提供自定義的儲存解決方案。CSI可以讓Kubernetes與不同的儲存提供商進行整合,從而實現高度可定製化的儲存管理。

一起學習

歡迎大家關注我,點贊、留言、轉發。

你的支援,是我更文的最大動力!