SSH AKS集羣節點的幾種方法(二)

承接上文,之前講的兩種方法都是使用一臺VM作爲跳板來訪問到集羣的NODE服務器,接下來介紹兩種不需要跳板機的方法,相對來說更簡單一些

第一種:通過pod直接ssh集羣

這種方法其實就是直接在集羣節點上創建個pod,然後進入到pod中進行ssh連接,因爲pod和node本身網絡就是相通的,所以可以直接訪問

首先下載kubeconfig

az aks get-credentials --resource-group garrickmeng --name noSSHManagedCluster

然後可以直接run一個debian的pod,其實別的也可以,只要image裏組件夠用就好

kubectl run -it --rm aks-ssh --image=debian

使用--it的方式在創建完pod後就會直接進入交互式界面,接下來就可以直接在pod裏安裝open-ssh

apt-get update && apt-get install openssh-client -y

圖片14.png

這種在pod裏ssh的方式,和在跳轉機其實本質上並沒有區別,所以依然還是需要集羣的私鑰作爲身份驗證憑據的

所以接下來另開一個terminal,把private key copy到pod裏

$pod=kubectl get pod -l run=aks-ssh -o jsonpath='{.items[0].metadata.name}':/id_rsa

kubectl cp "C:\Users\garrick.meng\.ssh\id_rsa" $pod

回到pod中,已經能看到文件了

圖片15.png


接下來就是傳統的linux ssh方法了,修改private key的文件屬性,然後直接用ssh連接

ssh -i id_rsa [email protected]

圖片16.png

登錄完成

第二種:通過特權容器直接訪問

最後一種方法可以說是種野路子,也就是通過特權容器的方式直接來訪問到pod所在的節點,這種方法甚至不需要private key, 當然還是需要能在集羣內運行pod的權限,本身這種方法其實不是很推薦,因爲要跑特權容器,權限給的太大了,算是個備用的方法吧

可以直接通過kube-enter這個腳本來創建特權容器

wget https://raw.githubusercontent.com/andyzhangx/demo/master/dev/kubectl-enter

圖片17.png

順手給個執行權限

chmod a+x ./kubectl-enter

然後先獲取下node的名稱,因爲要在被訪問的node上創建特權容器

kubectl get no

圖片18.png


腳本使用也可以簡單,直接後邊加上node名稱即可

./kubectl-enter aks-systempool-26624565-vmss000000

可以看到直接就進入到交互式界面,可以運行命令了,不需要private key

圖片19.png

在集羣裏也可以看到會有個pod在運行

圖片20.png

並且是個特權容器

圖片21.png

生產環境最好還是把運行這種容器的權限禁掉比較好

以上就是總結的幾個SSH到集羣節點的辦法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章