無狀態工作負載不會儲存任何資料或狀態,例如Nginx。您可以通過鏡像、編排模板及命令列建立一個無狀態應用。通過私人鏡像建立應用時,您還可以通過Container Service控制台為私人鏡像設定密鑰,以確保鏡像安全。本文以Nginx為例介紹如何通過鏡像、編排模板以及命令建立無狀態應用。
前提條件
已建立Kubernetes叢集。具體操作,請參見建立ACK託管叢集。
已通過kubectl串連Kubernetes叢集。具體操作,請參見通過Kubectl串連Kubernetes叢集。
已構建私人鏡像倉庫,並將鏡像上傳到該倉庫中。本例中以阿里雲Container Registry為例。具體操作,請參見管理鏡像。
使用鏡像建立無狀態Deployment應用
步驟一:配置應用基本資料
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面,單擊使用鏡像建立。
在應用基本資料設定精靈頁面,設定應用的基本資料。
在配置Deployment負載之前,您需要在頁面頂部設定應用所在的命名空間。本例中設定命名空間為default,應用類型為無狀態(Deployment)。
配置項
描述
應用程式名稱
應用的名稱。
副本數量
即應用程式套件含的Pod數量,預設數量為2。
類型
定義資來源物件的類型,可選擇無狀態(Deployment)、有狀態(StatefulSet)、任務(Job)、定時任務(CronJob)、守護進程集(DaemonSet)。
標籤
為該應用添加一個標籤,標識該應用。
註解
為該應用添加一個註解(Annotation)。
時區同步
容器與節點是否使用相同的時區。
單擊下一步,進入容器設定精靈頁面。
步驟二:配置容器
在容器配置嚮導頁面,配置容器的鏡像、資源、連接埠、環境變數、健全狀態檢查、生命週期、資料卷和日誌。
在容器1頁簽右側,單擊添加容器可以為應用的Pod設定多個容器。
在基本配置地區,完成容器的基本配置。
參數
描述
鏡像名稱
選擇鏡像
您可以單擊選擇鏡像,選擇所需的鏡像。支援選擇以下三種類型的鏡像。
Container Registry企業版:可以選擇託管在Container RegistryACR中的企業版鏡像。需要選擇鏡像所屬地區,以及鏡像服務執行個體。關於ACR的更多資訊,請參見什麼是Container RegistryACR。
Container Registry個人版:可以選擇託管在Container RegistryACR中的個人版鏡像。需要選擇鏡像所屬地區,以及鏡像服務執行個體。
製品中心:包含應用程式容器化基礎OS鏡像、基礎語言鏡像、AI/巨量資料相關鏡像,本樣本以製品中心的Nginx鏡像為例說明。關於製品中心的更多資訊,請參見製品中心。
說明Container RegistryACR提供製品中心便於您的基礎鏡像使用,這些基礎鏡像由阿里雲或者龍蜥社區做版本更新及安全修複。如果您有額外的鏡像需求或者問題,請加入DingTalk群33605007047進行諮詢。
您還可以填寫私人鏡像。填寫的格式為
domainname/namespace/imagename:tag
。選擇鏡像拉取策略
ACK支援以下三種鏡像拉取策略(imagePullPolicy):
優先使用本地鏡像(IfNotPresent):如果本地有該鏡像(之前拉取過該鏡像至宿主機中),則使用本地鏡像,本地不存在時拉取鏡像。
總是拉取鏡像(Always):表示每次部署或擴容都會從Container Registry重新拉取鏡像,而不會從本地拉取鏡像。
僅使用本地鏡像(Never):僅使用本地鏡像。
說明當您選中鏡像拉取策略時,預設不設定鏡像拉取策略。
設定鏡像密鑰
您可以單擊設定鏡像密鑰,為私人鏡像設定密鑰以確保安全。
對於ACR個人版執行個體,您可以通過設定鏡像密鑰的方式拉取容器鏡像。設定密鑰的更多資訊,請參見建立保密字典。
對於ACR企業版執行個體,您可以通過免密組件拉取鏡像。具體操作,請參見使用免密組件拉取容器鏡像。
資源限制
可指定該應用所能使用的資源上限,包括CPU、記憶體和Ephemeral-Storage三種資源,以防止佔用過多資源。關於設定資源限制的更多資訊,請參見資源畫像。
所需資源
為該應用預留資源額度,包括CPU、記憶體和Ephemeral-Storage三種資源,即容器獨佔這些資源,防止因資源不足而被其他服務或進程爭奪資源,導致應用不可用。關於設定所需資源的更多資訊,請參見資源畫像。
容器啟動項
stdin:表示為該容器開啟標準輸入。
tty:表示為該容器分配一個虛擬終端,以便於向容器發送訊號。
通常這兩個選項是一起使用的,表示將終端(tty)綁定到容器的標準輸入(stdin)上。例如,一個互動程式從使用者擷取標準輸入,並顯示到終端中。
特權容器
選擇特權容器,則privileged=true,開啟特權模式。
不選擇特權容器,則privileged=false,關閉特權模式。
初始化容器
選中該選項,表示建立一個初始化容器。
初始化容器提供了一種機制來阻塞或延遲應用程式容器的啟動,初始化容器執行成功後,Pod內的應用程式容器會並行啟動。例如,檢測依賴服務的可用性。初始化容器可以包括一些應用鏡像中不存在的工具 + 生產力和安裝指令碼,用來初始化應用程式容器的運行環境,例如設定核心參數、組建組態檔案。更多資訊,請參見Init Containers。
可選:在連接埠設定地區,單擊新增設定容器的連接埠。
參數
描述
名稱
設定容器連接埠名稱。
容器連接埠
設定暴露的容器訪問連接埠或連接埠名,連接埠號碼必須介於1~65535。
協議
支援TCP和UDP。
可選:在環境變數地區,單擊新增設定環境變數。
支援通過索引值對的形式為Pod配置環境變數。用於給Pod添加環境標誌或傳遞配置等,具體操作,請參見Pod variable。
參數
描述
類型
設定環境變數的類型,支援以下類型:
自訂
配置項
保密字典
變數/變數引用
資源引用
配置項、保密字典支援對全部檔案的引用,以保密字典為例。選擇保密字典類型,只選擇目標保密字典,則預設引用全部檔案。
對應的YAML,也引用了整個密鑰(Secret)。
選擇資源引用,主要使用
resourceFieldRef
參數,從Pod規範中引用容器已經聲明的資源值,然後將這些值作為環境變數傳遞給容器。對應的YAML如下:變數名稱
設定環境變數名稱。
變數/變數引用
設定變數引用的值。
可選:在健全狀態檢查地區,根據需要開啟存活檢查、就緒檢查及啟動探測。
更多資訊,請參見配置存活、就緒和啟動探測器。
參數
請求類型
配置說明
存活檢查(Liveness):用於檢測何時重啟容器。
就緒檢查(Readiness):確定容器是否已經就緒,且可以接受流量。
啟動探測(Startup Probes):用於檢測何時啟動容器。
說明僅Kubernetes叢集1.18及之後版本支援啟動探測。
HTTP請求
即向容器發送一個HTTP GET請求,支援的參數包括:
協議:HTTP/HTTPS。
路徑:訪問HTTP Server的路徑。
連接埠:容器暴露的訪問連接埠或連接埠名,連接埠號碼必須介於1~65535。
Http頭:即HTTP Headers,HTTP請求中自訂的要求標頭,HTTP允許重複的Header。支援索引值對的配置方式。
延遲探測時間(秒):即initialDelaySeconds,容器啟動後第一次執行探測時需要等待多少秒,預設為3秒。
執行探測頻率(秒):即periodSeconds,指執行探測的時間間隔,預設為10秒,最小為1秒。
逾時時間(秒):即timeoutSeconds,探測逾時時間。預設1秒,最小1秒。
健康閾值:探測失敗後,最少連續探測成功多少次才被認定為成功。預設是1,最小值是1。對於存活檢查(liveness)必須是1。
不健康閾值:探測成功後,最少連續探測失敗多少次才被認定為失敗。預設是3,最小值是1。
TCP串連
即向容器發送一個TCP Socket,Kubelet將嘗試在指定連接埠上開啟容器的通訊端。如果可以建立串連,容器被認為是健康的,如果不能就認為是失敗的。支援的參數包括:
連接埠:容器暴露的訪問連接埠或連接埠名,連接埠號碼必須介於1~65535。
延遲探測時間(秒):即initialDelaySeconds,容器啟動後第一次執行探測時需要等待多少秒,預設為15秒。
執行探測頻率(秒):即periodSeconds,指執行探測的時間間隔,預設為10秒,最小為1秒。
逾時時間(秒):即timeoutSeconds,探測逾時時間。預設1秒,最小1秒。
健康閾值:探測失敗後,最少連續探測成功多少次才被認定為成功。預設是1,最小值是1。對於存活檢查(liveness)必須是1。
不健康閾值:探測成功後,最少連續探測失敗多少次才被認定為失敗。預設是3,最小值是1。
命令列
通過在容器中執行探針檢測命令,來檢測容器的健康情況。支援的參數包括:
命令列:用於檢測容器健康情況的探測命令。
延遲探測時間(秒):即initialDelaySeconds,容器啟動後第一次執行探測時需要等待多少秒,預設為5秒。
執行探測頻率(秒):即periodSeconds,指執行探測的時間間隔,預設為10秒,最小為1秒。
逾時時間(秒):即timeoutSeconds,探測逾時時間。預設1秒,最小1秒。
健康閾值:探測失敗後,最少連續探測成功多少次才被認定為成功。預設是1,最小值是1。對於存活檢查(liveness)必須是1。
不健康閾值:探測成功後,最少連續探測失敗多少次才被認定為失敗。預設是3,最小值是1。
可選:在生命週期地區,設定容器的生命週期。
您可以為容器的生命週期配置啟動執行、啟動後處理和停止前處理。具體操作,請參見配置生命週期。
參數
描述
啟動執行
為容器設定啟動前置命令和參數。
啟動後處理
為容器設定啟動後的命令。
停止前處理
為容器設定預結束命令。
可選:在資料卷地區,增加本機存放區或雲端儲存聲明PVC(Persistent Volume Claim)。
參數
描述
增加本機存放區
本機存放區:支援主機目錄(HostPath)、配置項(ConfigMap)、保密字典(Secret)和臨時目錄,將對應的掛載源掛載到容器路徑中。更多資訊,請參見volumes。
增加雲端儲存聲明(PersistentVolumeClaim)
支援通過PVC掛載雲端儲存卷。在選擇目標掛載源前,您需要建立雲端儲存聲明。具體操作,請參見建立持久化儲存卷聲明。
本例中配置了一個雲端儲存類型的資料卷聲明disk-ssd,將其掛載到容器的/tmp路徑下。
可選:在日誌配置地區,進行採集配置和自訂Tag設定。
重要請確保已部署Kubernetes叢集,並且在此叢集上已安裝日誌外掛程式。
配置項
描述
採集配置
日誌庫:即在Log Service中產生一個對應的Logstore,用於儲存採集到的日誌。
容器內日誌路徑:支援Stdout和文本日誌。
Stdout:表示採集容器的標準輸出日誌。
文本日誌:表示收集容器內指定路徑的日誌,本例中表示收集/var/log/nginx下所有的文本日誌,也支援萬用字元的方式。
自訂Tag
您還可以設定自訂Tag,設定Tag後,會將該Tag一起採集到容器的日誌輸出中。自訂Tag可協助您給容器日誌打上Tag,方便進行日誌統計和過濾等分析操作。
單擊下一步,進入進階設定精靈頁面。
步驟三:完成進階配置
在進階配置嚮導頁面中設定訪問、伸縮、調度和標籤註解。
在訪問設定地區,設定暴露後端Pod的方式。
說明針對應用的通訊需求,您可靈活進行訪問設定:
內部應用:對於只在叢集內部工作的應用,您可以在建立服務時,根據需要選擇虛擬叢集IP或節點連接埠類型的服務,來進行內部通訊。
外部應用:對於需要暴露到公網的應用,您可以採用兩種方式進行訪問設定。
建立負載平衡類型的服務:您可以在建立服務時,選擇負載平衡類型的服務。通過阿里雲提供的負載平衡服務SLB(Server Load Balancer),使得該服務提供公網訪問能力。
建立路由(Ingress):通過建立路由(Ingress)提供公網訪問能力。更多資訊,請參見Ingress。
您可以設定暴露後端Pod的方式。本例中選擇虛擬叢集IP和路由(Ingress),構建一個公網可訪問的Nginx應用。
佈建服務(Service):在服務(Service)右側,單擊建立設定服務的配置項。
配置項
描述
服務名稱
輸入Service(服務)的名稱。
服務類型
選擇Service類型,Service網路支援以下模式,分別對接不同來源和類型的用戶端的訪問,包括:
外部流量策略
您的服務類型為節點連接埠或負載平衡時,才能設定外部流量策略。關於外部流量策略的詳細介紹,請參見Service快速入門。
Local:流量只發給本節點的Pod。
Cluster:流量可以轉寄到叢集中其他節點上的Pod。
服務關聯
選擇服務要綁定的後端應用。若不進行關聯部署,則不會建立相關的Endpoints對象。關於服務關聯的詳細介紹,請參見services-without-selectors。
連接埠映射
添加服務連接埠(對應Service YAML檔案中的
port
)和容器連接埠(對應Service YAML檔案中的targetPort
),容器連接埠需要與後端的Pod中暴露的容器連接埠一致。註解
為該服務添加一個註解(Annotation),配置負載平衡的參數。更多參數,請參見通過Annotation配置傳統型負載平衡CLB和通過Annotation配置網路型負載平衡NLB。
重要請勿複用叢集的API Server的Server Load Balancer執行個體,否則將導致叢集訪問異常。
標籤
為該服務添加一個標籤,標識該服務。
配置路由(Ingress):在路由(Ingress)右側,單擊建立設定後端Pod的路由規則。
配置項
描述
名稱
輸入路由的名稱。
規則
路由規則是指授權入站到達叢集服務的規則。更多資訊,請參見配置路由資訊。
網域名稱:輸入Ingress網域名稱。
路徑:指定服務訪問的URL路徑,預設為根路徑/,本例不作配置。每個路徑 (path)都關聯一個backend(服務),在阿里雲SLB將流量轉寄到backend之前,所有的入站請求都要先匹配網域名稱和路徑。
服務:選擇服務的名稱和對應連接埠。
開啟TLS:配置安全的路由服務。具體操作,請參見Nginx Ingress進階用法。
灰階發布
開啟灰階發布開關。此處建議選擇社區版。
Ingress Class
自訂Ingress的類。
註解
您可以自訂註解名稱和值,也可以根據名稱選擇或搜尋需要配置的註解。Ingress的註解請參見Annotations。
單擊+添加,可對Ingress無上限地添加註解。
標籤
標籤的作用是為Ingress添加對應的標籤,表示該Ingress的特點。
單擊+添加,可對Ingress無上限地添加標籤。
在訪問設定地區,您可以看到已建立的服務和路由,您可以單擊變更和刪除進行二次配置。
可選:在伸縮配置地區,配置是否開啟指標伸縮和定時伸縮,從而滿足應用在不同負載下的需求。
Container Service支援容器組的指標伸縮,即根據容器的CPU和記憶體資源佔用情況自動調整容器組的數量。
說明若要啟用自動調整,您必須為容器設定所需資源,否則容器自動調整無法生效。
參數
描述
指標
支援CPU和記憶體,需要和設定的所需資源類型相同。
觸發條件
資源使用率的百分比,超過該使用量,容器開始擴容。
最大副本數
該負載類型可擴容的容器數量上限。
最小副本數
該負載類型可縮容的容器數量下限。
Container Service支援容器組的定時伸縮,即定時地對Container ServiceKubernetes叢集進行擴縮容。開啟定時伸縮前,需先安裝ack-kubernetes-cronhpa-controller組件。關於定時伸縮的詳細說明,請參見步驟二:建立CronHPA任務。
可選:在調度設定地區,設定升級方式、節點親和性、應用親和性和應用反親和性,更多資訊,請參見Affinity and anti-affinity。
說明親和性調度依賴節點標籤和Pod標籤。您可以使用內建的標籤進行調度,也可以預先為節點、Pod配置相關的標籤。
配置項
描述
升級方式
選擇升級方式。包括滾動升級(rollingupdate)和替換升級(recreate),關於升級方式的更多資訊,請參見Deployments。
節點親和性
設定節點親和性,通過Worker節點的Label標籤進行設定。
節點調度支援硬約束和軟約束(Required/Preferred),以及豐富的匹配運算式(In, NotIn, Exists, DoesNotExist. Gt, and Lt):
必須滿足,即硬約束,一定要滿足,對應requiredDuringSchedulingIgnoredDuringExecution,效果與
NodeSelector
相同。本例中Pod只能調度到具有對應標籤的Worker節點。您可以定義多條硬約束規則,但只需滿足其中一條。盡量滿足,即軟約束,不一定滿足,對應preferredDuringSchedulingIgnoredDuringExecution。調度會盡量調度Pod到具有對應標籤的Node節點。您還可為軟約束規則設定權重,具體調度時,若存在多個合格節點,權重最大的節點會被優先調度。您可定義多條軟約束規則,但必須滿足全部約束,才會進行調度。
應用親和性
決定應用的Pod可以和哪些Pod部署在同一拓撲域。例如,對於相互連信的服務,可通過應用親和性調度,將其部署到同一拓撲域(如同一個主機)中,減少它們之間的網路延遲。
根據節點上啟動並執行Pod的標籤(Label)來進行調度,支援硬約束和軟約束,匹配的運算式有:
In, NotIn, Exists, DoesNotExist
。必須滿足,即硬約束,一定要滿足,對應requiredDuringSchedulingIgnoredDuringExecution,Pod的親和性調度必須要滿足後續定義的約束條件。
命名空間:該策略是依據Pod的Label進行調度,所以會受到命名空間的約束。
拓撲域:即topologyKey,指定調度時範圍,這是通過Node節點的標籤來實現的,例如指定為
kubernetes.io/hostname
,那就是以Node節點為區分範圍;如果指定為beta.kubernetes.io/os
,則以Node節點的作業系統類型來區分。選取器:單擊選取器右側的加號按鈕,您可添加多條硬約束規則。
查看應用列表:單擊應用列表,彈出對話方塊,您可在此查看各命名空間下的應用,並可將應用的標籤匯入到親和性配置頁面。
硬約束條件:設定已有應用的標籤、操作符和標籤值。本例中,表示將待建立的應用調度到該主機上,該主機啟動並執行已有應用具有
app:nginx
標籤。
盡量滿足,即軟約束,不一定滿足,對應preferredDuringSchedulingIgnoredDuringExecution。Pod的親和性調度會盡量滿足後續定義的約束條件。對於軟約束規則,您可配置每條規則的權重,其他配置規則與硬約束規則相同。
說明權重:設定一條軟約束規則的權重,介於1~100,通過演算法計算滿足軟約束規則的節點的權重,將Pod調度到權重最大的節點上。
應用反親和性
決定應用的Pod不與哪些Pod部署在同一拓撲域。應用非親和性調度的情境包括:
將一個服務的Pod分散部署到不同的拓撲域(如不同主機)中,提高服務本身的穩定性。
給予Pod一個節點的獨佔存取權限來保證資源隔離,保證不會有其他Pod來分享節點資源。
把可能會相互影響的服務的Pod分散在不同的主機上。
說明應用非親和性調度的設定方式與親和性調度相同,但是相同的調度規則代表的意思不同,請根據使用情境進行選擇。
調度容忍
容忍被應用於Pod,允許這個Pod被調度到相應的汙點上。關於如何配置汙點(鍵對值及效果Effect)與容忍,請參見Kubernetes官方文檔汙點與容忍。
調度到虛擬節點
設定是否調度到虛擬節點,僅ACK叢集Pro版支援,如果您的叢集中沒有虛擬節點,則無法設定該配置項。關於如何將Pod調度至虛擬節點,請參見指定ECS和ECI的資源分派。
可選:在標籤和注釋地區,單擊添加設定容器組的標籤和注釋。
參數
描述
Pod標籤
為該Pod添加一個標籤,標識該應用。
Pod註解
為該Pod添加一個註解(Annotation)。
單擊建立。
步驟四:查看應用
在建立完成設定精靈頁面中查看應用任務。
在建立應用任務已提交面板,單擊查看應用詳情。
預設進入建立的nginx-deployment的詳情頁面。
說明您也可以通過以下操作建立路由與服務。如上圖所示,在訪問方式頁簽。
單擊服務右側的建立,也可以建立服務。
單擊路由右側的建立,也可以建立路由。
單擊左側導覽列的 ,可以看到路由列表下出現一條規則。
在瀏覽器中訪問路由測試網域名稱,您可以訪問Nginx歡迎頁面。
相關操作
查看無狀態工作負載詳情
在左側導覽列單擊叢集,單擊目的地組群名稱或目的地組群操作列下的詳情,選擇
,在無狀態頁面單擊目標應用程式名稱或目標應用操作列下的詳情。在無狀態列表中單擊標籤欄位,輸入對應應用標籤的key與value
,單擊確定後可過濾列表中的應用。
在應用詳情頁面您可以編輯、伸縮、查看YAML、重新部署、及重新整理應用。
操作項 | 描述 |
編輯 | 在應用詳情頁面單擊編輯,您可以修改應用資訊。 |
伸縮 | 在應用詳情頁面單擊伸縮,您可以修改所需容器組數量。 |
查看YAML | 在應用詳情頁面單擊查看Yaml,您可以更新、下載、另存新檔YAML檔案。 |
重新部署 | 在應用詳情頁面單擊重新部署,您可以重新部署應用。 |
重新整理 | 在應用詳情頁面單擊重新整理,您可以重新整理應用。 |
編輯已建立的無狀態工作負載
在無狀態頁面的目標應用操作列下,單擊更多後,您可以進行以下操作:
操作項 | 描述 |
查看Yaml | 查看應用的YAML內容。 |
重新部署 | 重新部署應用。 |
編輯標籤 | 為應用設定標籤。 |
編輯註解 | 為應用添加註解。 |
節點親和性 | 為應用設定節點親和性。更多資訊,請參見調度配置。 |
Auto Scaling | 為應用設定Auto Scaling。更多資訊,請參見使用容器水平伸縮(HPA)和使用容器定時水平伸縮(CronHPA)。 |
調度容忍 | 設定應用的容忍策略。更多資訊,請參見調度配置。 |
升級策略 | 設定應用升級的策略:
|
複製建立 | 複製應用相同的容器設定。 |
復原 | 復原至應用之前發布的版本。 |
日誌 | 查看應用的日誌資訊。 |
刪除 | 刪除應用。 |
批量重新部署應用
在無狀態頁面下方,通過選擇批量重新部署可以實現多個應用的重新部署。
通過編排模板建立Linux應用
在Container ServiceKubernetes模板編排中,您需要自己定義一個應用運行所需的資來源物件,通過標籤選取器等機制,將資來源物件組合成一個完整的應用。
本例示範如何通過一個編排模板建立Nginx應用,包含一個Deployment和Service,後端Deployment會建立Pod資來源物件,Service會綁定到後端Pod上,形成一個完整的Nginx應用。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面,單擊右上方的使用YAML建立資源。
對模板進行相關配置,完成配置後單擊建立。
樣本模板:阿里雲Container Service提供了多種資源類型的Kubernetes YAML樣本模板,讓您快速部署資來源物件。您可以根據Kubernetes YAML編排的格式要求自主編寫,來描述您想定義的資源類型。
添加工作負載:您可以通過此功能快速定義一個YAML模板。
使用已有模板:您可以將已有編排模板匯入到模板配置頁面。
儲存模板:您可以儲存設定好的編排模板。
下面是一個Nginx應用的樣本編排,基於Container Service內建的編排模板。通過該編排模板,即可快速建立一個屬於Nginx應用的Deployment。
說明Container Service支援Kubernetes YAML編排,支援通過
---
符號將資來源物件分隔,從而可以通過一個模板建立多個資來源物件。可選:在應用中通過Volume方式掛載儲存卷時,預設情況下掛載目錄下的檔案在掛載後將會被覆蓋。若要不影響掛載目錄下的其他檔案,您可以配置
subPath
參數。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 # replace it with your exactly <image_name:tags> ports: - containerPort: 80 volumeMounts: - name: nginx-config mountPath: /etc/nginx/nginx.conf subPath: nginx.conf #設定subPath。 volumes: - name: nginx-config configMap: name: nginx-conf --- apiVersion: v1 kind: Service metadata: name: my-service1 #TODO: to specify your service name labels: app: nginx spec: selector: app: nginx #TODO: change label selector to match your backend pod ports: - protocol: TCP name: http port: 30080 #TODO: choose an unique port on each node to avoid port conflict targetPort: 80 type: LoadBalancer ##本例中將type從NodePort修改為LoadBalancer。 --- #儲存卷的配置項 apiVersion: v1 kind: ConfigMap metadata: name: nginx-conf namespace: default data: nginx.conf: |- user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
單擊建立後。會提示部署狀態資訊。
通過命令列管理應用
您可以通過命令列建立應用或查看應用的容器。
通過命令列建立應用
執行以下命令啟動容器(本樣本中為Nginx Web伺服器)。
1.18以上版本的叢集,使用以下命令啟動。
kubectl create deployment nginx --image=registry.aliyuncs.com/spacexnice/netdia:latest
1.18及以下版本的叢集,使用以下命令啟動。
kubectl run -it nginx --image=registry.aliyuncs.com/spacexnice/netdia:latest
執行以下命令,為該容器建立一個服務入口,指定
--type=LoadBalancer
將會為您建立一個阿里雲負載平衡路由到該Nginx容器。kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer
通過命令列查看容器
執行以下命令,查看所有default命名空間裡正在啟動並執行容器。
kubectl get pods
預期輸出:
NAME READY STATUS RESTARTS AGE
nginx-2721357637-d**** 1/1 Running 1 9h
使用鏡像密鑰建立應用
Container ServiceKubernetes叢集支援通過Web介面使用鏡像密鑰,包括建立鏡像密鑰和使用已有鏡像密鑰。
您在使用私人鏡像建立應用時,為確保鏡像安全,通常需要為鏡像設定密鑰。通過Container Service控制台,您可以方便地將私人鏡像庫的身份認證資訊通過docker-registry類型的Secret傳入到Kubernetes中。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面,設定命名空間,然後單擊右上方使用鏡像建立。
在應用基本資料版面設定相關參數。更多資訊,請參見應用基本資料。
設定容器配置。
本例僅對容器鏡像密鑰的配置進行說明,關於容器配置說明,請參見容器基本配置。
在容器配置頁面,首先配置鏡像名稱,在鏡像名稱欄中輸入私人鏡像地址,填寫格式是
domainname/namespace/imagename
。說明公用鏡像無須配置鏡像密鑰。
在鏡像版本欄中,輸入私人鏡像地址版本。
本文樣本使用Tomcat私人鏡像。
單擊設定鏡像密鑰,在彈出的對話方塊中進行設定。
選擇建立密鑰,您需要配置以下參數。
參數
描述
密鑰名稱(regsecret)
指定密鑰的鍵名稱,可自行定義。
倉庫網域名稱(docker-server)
指定Docker倉庫地址。若輸入阿里雲Container Service鏡像倉庫,會預設補齊。
使用者名稱(docker-username)
指定Docker倉庫使用者名稱。若使用阿里雲Container Registry,則為阿里雲登入帳號(包括阿里雲主帳號和子帳號)。
密碼(docker-password)
指定Docker倉庫登入密碼。若使用阿里雲Container Registry,即容器鏡像獨立登入密碼。
郵箱(docker-email)
指定郵件地址。非必選。
單擊確定,您可以看到密鑰已建立成功。
您也可以單擊已有密鑰。您可以通過命令列或YAML檔案等方式預先建立好容器鏡像密鑰。具體操作,請參見如何支援私人鏡像和使用私人鏡像倉庫建立應用。
根據頁面引導,完成其他配置,最後單擊建立。
更多資訊,請參見上文步驟三:完成進階配置。
在控制台左側導覽列,單擊叢集。
在叢集列表頁面,單擊目的地組群名稱或者目的地組群右側操作列下的詳情。
在叢集管理頁左側導覽列,選擇 。
在無狀態頁面,查看目標應用的運行情況。
Tomcat應用已正常運行,成功通過密鑰使用Tomcat私人鏡像。
相關文檔
如需建立有狀態工作負載,請參見建立有狀態工作負載StatefulSet。
若建立應用時出現問題,請參見應用FAQ。
若Pod出現異常問題,請參見Pod異常問題排查。