在您的 Azure Stack Edge Pro GPU 裝置上透過 kubectl 連線至 Kubernetes 叢集並加以管理
適用於:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
在您的 Azure Stack Edge Pro 裝置上,系統會在您設定計算角色時建立 Kubernetes 叢集。 在建立 Kubernetes 叢集後,您便可以透過原生工具 (例如 kubectl),在用戶端電腦本機中連線並管理叢集。
本文說明如何連線到 Azure Stack Edge Pro 裝置上的 Kubernetes 叢集,然後使用 kubectl 進行管理。
必要條件
在您開始前,請確定:
您已存取 Azure Stack Edge Pro 裝置。
您已依照啟動 Azure Stack Edge Pro 中的說明來啟動 Azure Stack Edge Pro 裝置。
您已在裝置上啟用計算角色。 當您依照在 Azure Stack Edge Pro 裝置上設定計算的指示在裝置上設定計算時,將會一併在裝置上建立 Kubernetes 叢集。
您可以存取執行 PowerShell 5.0 或更新版本的 Windows 用戶端系統,用於存取裝置。 您也可以有搭配支援作業系統的其他用戶端。
您在本機 Web UI 的 [裝置] 頁面具有 Kubernetes API 端點。 如需詳細資訊,請參閱取得 Kubernetes API 端點的指示
連線至 PowerShell 介面
建立 Kubernetes 叢集之後,您可以存取此叢集以建立命名空間和使用者,並將使用者指派給命名空間。 此動作需要您連線至裝置的 PowerShell 介面。 在執行 PowerShell 的 Windows 用戶端上遵循下列步驟。
視用戶端的作業系統而定,遠端連線到裝置的程序會有所不同。
從遠端 Windows 用戶端連線
必要條件
在您開始前,請確定:
您的 Windows 用戶端執行 Windows PowerShell 5.0 以上版本。
您的 Windows 用戶端具有簽署鏈結 (根憑證) 對應到裝置上安裝的節點憑證。 如需詳細指示,請參閱在 Windows 用戶端上安裝憑證。
hosts
檔案位於 Windows 用戶端的C:\Windows\System32\drivers\etc
,具有對應至節點憑證的項目,格式如下:<Device IP> <Node serial number>.<DNS domain of the device>
以下是
hosts
檔案的範例項目:10.100.10.10 1HXQG13.wdshcsso.com
詳細步驟
請遵循下列步驟從 Windows 用戶端進行遠端連接。
以管理員身分執行 Windows PowerShell 工作階段。
請確定您的用戶端上正在執行 Windows 遠端管理服務。 在命令提示字元中,輸入:
winrm quickconfig
如需詳細資訊,請參閱 Windows 遠端管理的安裝和設定。
將變數指派給
hosts
檔案中使用的連接字串。$Name = "<Node serial number>.<DNS domain of the device>"
以裝置的節點序號和 DNS 網域取代
<Node serial number>
和<DNS domain of the device>
。 您可以從裝置的本機 web 使用者介面中的 [裝置] 頁面,取得 [憑證] 頁面和 [DNS 網域] 中節點序號的值。若要將您裝置的此連接字串新增至用戶端的信任主機清單,請輸入下列命令:
Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
在裝置上啟動 Windows PowerShell 工作階段:
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
如果您看到與信任關係相關的錯誤,請檢查上傳至您裝置的節點憑證簽署鏈是否也安裝在存取您裝置的用戶端上。
出現提示時,請提供密碼。 使用與用來登入本機 Web UI 相同的密碼。 預設本機 Web UI 密碼為 Password1。 當您使用遠端 PowerShell 成功連接到裝置時,您會看到下列範例輸出:
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\WINDOWS\system32> winrm quickconfig WinRM service is already running on this machine. PS C:\WINDOWS\system32> $Name = "1HXQG13.wdshcsso.com" PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing. Changes made through this interface without involving Microsoft Support could result in an unsupported configuration. [1HXQG13.wdshcsso.com]: PS>
當您使用 -UseSSL
選項時,您會以 HTTPS 透過 PowerShell 遠端處理。 建議您一律使用 HTTPS 透過 PowerShell 從遠端連線。 在信任的網路內,可接受以 HTTP 透過 PowerShell 進行遠端處理。 您必須先在本機 UI 中透過 HTTP 啟用遠端 PowerShell。 然後,您可以使用上述程序連線到裝置的 PowerShell 介面,而不使用 -UseSSL
選項。
如果您未使用憑證 (建議您使用憑證!),您可以使用工作階段選項略過憑證驗證檢查:-SkipCACheck -SkipCNCheck -SkipRevocationCheck
。
$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
以下是略過憑證檢查時的範例輸出:
PS C:\WINDOWS\system32> $Name = "1HXQG13.wdshcsso.com"
PS C:\WINDOWS\system32> $sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
PS C:\WINDOWS\system32> $sessOptions
MaximumConnectionRedirectionCount : 5
NoCompression : False
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : True
SkipCNCheck : True
SkipRevocationCheck : True
OperationTimeout : 00:03:00
NoEncryption : False
UseUTF16 : False
IncludePortInSPN : False
OutputBufferingMode : None
MaxConnectionRetryCount : 0
Culture :
UICulture :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize :
ApplicationArguments :
OpenTimeout : 00:03:00
CancelTimeout : 00:01:00
IdleTimeout : -00:00:00.0010000
PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please
engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing.
Changes made through this interface without involving Microsoft Support could result in an unsupported configuration.
[1HXQG13.wdshcsso.com]: PS>
重要
在目前的版本中,您只能透過 Windows 用戶端連線到裝置的 PowerShell 介面。 -UseSSL
選項不適用於 Linux 用戶端。
透過 Kubernetes RBAC 設定叢集存取
建立 Kubernetes 叢集之後,您可以透過命令列工具使用 kubectl 存取叢集。
在此方法中,您會建立命名空間和使用者。 然後,您會將使用者與命名空間建立關聯。 您也需要取得 config (組態) 檔,以便使用 Kubernetes 用戶端直接與您建立的 Kubernetes 叢集通訊,而不需要連線到 Azure Stack Edge Pro 裝置的 PowerShell 介面。
建立命名空間。 輸入:
New-HcsKubernetesNamespace -Namespace <string>
注意
命名空間和使用者名稱均適用 DNS 子網域命名慣例。
以下是範例輸出:
[10.100.10.10]: PS> New-HcsKubernetesNamespace -Namespace "myasetest1"
建立使用者並取得組態檔。 輸入:
New-HcsKubernetesUser -UserName <string>
注意
您無法使用 aseuser 作為使用者名稱,因為此名稱保留給與 Azure Stack Edge Pro 的 IoT 命名空間相關聯的預設使用者。
組態檔的輸出範例如下:
[10.100.10.10]: PS> New-HcsKubernetesUser -UserName "aseuser1" apiVersion: v1 clusters: - cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01ERXlPVEUyTlRFeE4xb1hEVE13TURFeU5qRTJOVEV4TjFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTXNpCkdZUHB0U1VWcDhKZEdVcHE1MVBURWhsZm8wWkk3YXFBdUlrOHZWdUFCZHJQK1FBSzFxcEN1di93NjIwbUtpZ0QKak1aT3Q4QkREREppWHF6UDZRZm5Oc0U2VXBHMnh0YnYrcTZHV2R5K0t6WkxMbXlwWGY3VjlzZEJnejVKVDNvYQpIdzFja2NTUklHSlV3UWxTbklNaHJUS3JUNDZFUUp3d282TmlNUzZMZDZieVk3WkUrTGg3OS9aNEhLanhTRmhMClc5ZG8veThZR3FXUDZmZTFmMmVmSkhUeGtwR05HZE1UVjNuOFlCZ0pSRzdrNjh0N2MrZ1NhbUlVWVJpTUNSNFAKYlFxcFpscWYvV2REZEJHOFh6aDJ0M1l4SkVIMm00T0Z1cSsvUitMYm95aHdKbmNMdVJ5OEpNZWlwTEQ3UlN0QwpZTDNNR0EzN2JieTRyYm4zVzg4Q0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFNbzFwWlBtQzV1cmRPZUJhSWQ4eEQzRkxCMG8KTlErbXBXMWpDd0ZtY3h6dUtlWmRsNXc2N0tuS2JTcDR0TXo1cXg3bUtSc0UxcnBoWkh2VHlKUXg1ZFk2ZE1Kdgp5d2FQZjBpT05TNlU2cC9INE12U1dJaEtJZ1FuTnE1dDh4TjJCNnZpQW41RmZoRkx6WEQrUlZGSm42cnovWkZnCmV6MHpxTkNKYmcvelFucFROcmQ2cnFFRHpoSVFZOVdYVWQycFh3ZXRqUXJpMkpZamh4NmtEcTVoRkZTM0FLUnIKOWlQTVQxaWNkR1NUMFVvM1hIZ1k2ck45WGp3MHFrY2I0Sy83UlVVWlRvS3dKamROR3lNTnpad000L2puR0p5SwpQTE9ycU5Ddlkvb0lkVEM5eVZVY3VRbXVlR0VqT20xUnN1RDFHYVE0RTZwakppVWJpMVdrajJ1bFhOWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= server: https://10.128.47.90:6443 name: kubernetes contexts: - context: cluster: kubernetes user: aseuser1 name: aseuser1@kubernetes current-context: aseuser1@kubernetes kind: Config preferences: {} users: - name: aseuser1 user: client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMwVENDQWJtZ0F3SUJBZ0lJWlFXcjY2cGFWSm93RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TURBeE1qa3hOalV4TVRkYUZ3MHlNVEF4TWpneU1qVTJNVGRhTUJNeApFVEFQQmdOVkJBTVRDR0Z6WlhWelpYSXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDCkFRRUF4R3RDaXJ2cVhGYm5wVmtaYlVPRWQ3cXg2UzNVZ092MlhHRHNKM2VYWXN0bUxQVjMrQnlBcWwyN211L1AKaWdmaWt6MG9QSW1iYmtvcVJkamlYckxFZnk0N3dHcEhzdUhUOHNLY2tHTnJleFE2bXhaZ29xaU1nL2FuMUpMdwpiOFEvVnlQaWdVdUt6eVBseEhUZmlmSVM5MzR1VnZVZUc0dzlMRjAyZ2s2Nitpc0ZtanhsVmhseWRMNlc2UmZTCjl0OGpNMEFkdEpJL0xNbE13RHJJRVdFKzM4WDVNelJhQkJYNnlzNDFWSkZxekcwdW14dHdxN2pGOXp1UTE4ekIKalRZaDl3OWVKcDJwS2Fvak5tNE9SSDh4SzVSaUhocjJ2anFJWXkxRDd2WDh0b0U1K05HNmxHZjh5L1NvQnNRbQpmOG9vL1k3SEZmQXVGdlN6WUc1RUlQTFM4UUlEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEClZSMGxCQXd3Q2dZSUt3WUJCUVVIQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFNR1BxY0YzS1BCbHZ0K24KN1NOcGE3anhWYkhZVGxyNTgwVWxzek93WEwwVnVPUUlCYmN2djIzZk9HNkhDZlQ0bWxBU0JRWVNZcmpLMjJTTwpTWld4cjNQUDlhVzNHajkxc0ttSnc1ZUF1WFhQbUJpK1RWQzBvY0ZLaEQvZ0o1aC93YnBaVndpVjVyRWE5Kzc2CnhNcFAzRld6dG5tT1hPaEl6UFNlR3B4YWpwQXd3ZXd4QU0yb0xGRFZFcy9XTFFMODJZM3NFcE93NVNaSVJJNXMKUHhMUTVnV1ZPM2x2SXcwZ3IrdkJlanZSOUZKaWVuTWFRdGdjSVgyRmpDaDBRMHVYRkdsTVNXWEljbjRLRTR0TApQSFFMalRSVUwyVnRXcW1YZ1RBM3RzN01DcGNRTFdPZFJUYkpSejZCbkc1aXVwcDdOSlFvYW9YcWpNVk5DVDZCCllYMEd0Skk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBeEd0Q2lydnFYRmJucFZrWmJVT0VkN3F4NlMzVWdPdjJYR0RzSjNlWFlzdG1MUFYzCitCeUFxbDI3bXUvUGlnZmlrejBvUEltYmJrb3FSZGppWHJMRWZ5NDd3R3BIc3VIVDhzS2NrR05yZXhRNm14WmcKb3FpTWcvYW4xSkx3YjhRL1Z5UGlnVXVLenlQbHhIVGZpZklTOTM0dVZ2VWVHNHc5TEYwMmdrNjYraXNGbWp4bApWaGx5ZEw2VzZSZlM5dDhqTTBBZHRKSS9MTWxNd0RySUVXRSszOFg1TXpSYUJCWDZ5czQxVkpGcXpHMHVteHR3CnE3akY5enVRMTh6QmpUWWg5dzllSnAycEthb2pObTRPUkg4eEs1UmlIaHIydmpxSVl5MUQ3dlg4dG9FNStORzYKbEdmOHkvU29Cc1FtZjhvby9ZN0hGZkF1RnZTellHNUVJUExTOFFJREFRQUJBb0lCQUVVSUVXM2kxMTQycU5raQo5RjNEWWZZV1pscTJZYjRoc0FjTmhWSGxwUTN5d0dsQ3FEUktDQ3BZSVF3MkJqSFR6WnpEM0xWU0E0K0NmMUxuCkE4QVdnaHJVcStsWE1QVzhpcG9DTGJaTlNzUUord0x3bld2dFl0MHFQaGZtd0p2M1UrK1RUQkwyOHNVVUw3ZVkKLzh0aWlhbno3ZU5mNklIMENyZmgxcnQ3WWhsemtRd1hBVHNScVJja0dMaTgrdGN5WnVzdGFhbENUSzBGRTdCaQpBUGE5a2w1SG56eCs4TTcvNWladHkwTUIxYWpWMnlGblBkUmlKSFVCb1AxVVV0QUthYjVZU0RvNllkZ2pIUTRHCjNWN1l1YWZobnVFMXA0VVIvUkloVVdjRlVVaTFBOFpZMFdnd1BDTmhnMWpQZU5vb2Y1UHpRbEY1OTRBREVwUUYKOFR2bG92RUNnWUVBOWZZbUxyY0tlQ0JiMTFoQVhoTi91Z1RTbU5xNnpFL1pPSWl6M0xwckdjRDhvWDdCVW9GcgplelkxbktSS2tkczE5OERnVjlQZUhuNzllQTRoMjM5RkIwNFFhMUJBdUVMRzRsdHJ3VlNxaFBENUR6YkcrSEhSCnJtYThVMEpUSmVVS0tJVjRUUGxlTzFtK2tjbkRJVXY1ckpwZDVXU3RvcUhXdk9RZkEvRUF0VlVDZ1lFQXpHOTcKTitCZVVvbFNiREttVUNGdTdPZGhYSXJYR3RnSEorZ2JOMDlnSHRURG5PY0IxZ1NzNkpZa1FPQU9qbWFxK05lRAp5SUF1NytheWlFRmpyT2tzTGhkSTREUXNkWFZveFFGVko1V1JwWlk3UTVRaFZpYUR2enR4NDlzSDlKSkplM2U0Cnl3NWdpNGkxKy90MnY2eWRKcWdNQ0xxOHlEdFRrcE9PSitkbkp5MENnWUJwZ3lpcURaZU9KTU9CUTdpSkl2QSsKQ21lVmJ1K0hTaEd6TU9HSHBPamc2V3IybEh1Mk94S3lqblM5TjdWTmtLNDhGQitwVFpnUm1RUi9CZ0Q4T2tLUQplYXFOZnFYazViQ1AxZ3dKcVpwazRVTFdoZmNoQ1NLY0lESlZ2VFFTSTRrU0RQK29kYWs0Nkt6WnVhWGRtTXdJCmdVZ2FhZkFhdmpaeVhhSDRmT0NDNlFLQmdHVXJCaDh3dVh5KzJEc1RGWnF4OE9McjNoS2Q0clUyRXRSODJIc1cKbk1xbEgraVZxU0x3VFdFTWJBUnUzTVU3cVlCYnBxdWlRNWdVNG1UcmR4Z3FpK0tEUTEwd2RJL3IrbDBEdTlCTApCRGlkajlaeGg4M0tZWWhSTXBzLzJULys1TDVsRU4zcnozczl2RkZtcisxS3pycENqeklDdDBtZmtrd0hHV0pGCjhaWkJBb0dBVXB3aUIrcWlHbkpxU1FtZHNSZFVabGFBaTRpbGhaa01RYTRHem95ZFQ3OTVHTm44ZThBRjd3WHMKTGpyYjdEV1FwakdCMnZpUlkySUZBVmIyKzZsdDlwOVJRMTZnSmxpNU5ZRXVvQWRoWXBsVWdBZGFHWHNGNHdabwo3SHFHTHBGdmUxVU5Gb0dQdkxpWUNrUFVYdGduQ3dNb0R2SEpKNzVYMXl6ckh6cmxUS1k9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== [10.100.10.10]: PS>
組態檔會以純文字顯示。 請複製此檔案,並將其儲存為 config (組態) 檔。
重要
請勿將組態檔儲存為 .txt 檔案,且儲存檔案時不要加上任何副檔名。
組態檔應該位於本機電腦上的使用者設定檔
.kube
資料夾中。 將檔案複製到使用者設定檔中的該資料夾。為命名空間與您建立的使用者建立關聯。 輸入:
Grant-HcsKubernetesNamespaceAccess -Namespace <string> -UserName <string>
以下是範例輸出:
[10.100.10.10]: PS>Grant-HcsKubernetesNamespaceAccess -Namespace "myasetest1" -UserName "aseuser1"
在擁有組態檔後,您就不需要實際存取叢集。 如果您的用戶端可以 Ping 至 Azure Stack Edge Pro 裝置 IP,則應該可以使用 kubectl 命令來引導叢集。
在您的用戶端上啟動新的 PowerShell 工作階段。 您不需要連線到裝置介面。 現在可以使用下列命令,在您的用戶端上安裝
kubectl
:PS C:\windows\system32> curl.exe -LO "https://dl.k8s.io/release/v1.25.0/bin/windows/amd64/kubectl.exe" PS C:\windows\system32>
例如,如果 Kubernetes 主要節點是執行 v1.25.0,請在用戶端上也安裝 v1.25.0。
重要
下載的用戶端不應超過主機一個次要版本以上。 不過用戶端版本最多可以比主機超前一個次要版本。 例如,v1.3 主機應該使用 v1.1、v1.2 和 v1.3 節點,而且應該能搭配 v1.2、v1.3 和 v1.4 版本的用戶端。 如需 Kubernetes 用戶端版本的詳細資訊,請參閱 Kubernetes 版本與版本誤差支援原則。 如需 Azure Stack Edge Pro 上 Kubernetes 伺服器版本的詳細資訊,請移至「取得 Kubernetes 伺服器版本」。 如果您執行適用於 Windows 的 Docker 或其他工具,
kubectl
有時會預先安裝在系統上。 請務必下載本節所指定的kubectl
版本,以搭配此 kubernetes 叢集使用。安裝可能需要數分鐘的時間。
確認已安裝的版本是您下載的版本。 您應該指定
kubectl.exe
安裝在系統上的絕對路徑。PS C:\Users\myuser> C:\windows\system32\kubectl.exe version Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.2", GitCommit:"f6278300bebbb750328ac16ee6dd3aa7d3549568", GitTreeState:"clean", BuildDate:"2019-08-05T09:23:26Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"windows/amd64"} Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:09:21Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"} PS C:\Users\myuser>
如需進一步了解用於管理 Kubernetes 叢集的
kubectl
命令,請移至 kubectl 概觀。將 DNS 項目新增至系統上的 hosts 檔案。
以系統管理員身分啟動 [記事本],然後開啟位於
C:\windows\system32\drivers\etc\hosts
的hosts
檔案。使用您在先前步驟中從本機 UI [裝置] 頁面儲存的資訊,在主機檔案中建立項目。
例如,複製此端點
https://compute.asedevice.microsoftdatabox.com/[10.100.10.10]
以使用裝置 IP 位址和 DNS 網域建立下列項目:10.100.10.10 compute.asedevice.microsoftdatabox.com
若要確認您是否能連線至 Kubernetes Pod,請輸入:
PS C:\Users\myuser> kubectl get pods -n "myasetest1" No resources found. PS C:\Users\myuser>
您現在可以在命名空間中部署應用程式,然後檢視這些應用程式和其記錄。
重要
有許多命令是您無法執行的,例如,需要具備管理員存取權的命令。 您只能執行命名空間上允許的作業。
移除 Kubernetes 叢集
若要移除 Kubernetes 叢集,您必須移除 IoT Edge 組態。
如需詳細指示,請移至管理 IoT Edge 組態。