新聞中心
使用 kubectl 完成集群的第一次訪問
當你第一次訪問 Kubernetes API 的時候,我們建議你使用 Kubernetes CLI 工具 ?kubectl?。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),龍華企業(yè)網(wǎng)站建設(shè),龍華品牌網(wǎng)站建設(shè),網(wǎng)站定制,龍華網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,龍華網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
訪問集群時,你需要知道集群的地址并且擁有訪問的憑證。通常,這些在你通過 啟動安裝安裝集群時都是自動安裝好的,或者其他人安裝時 也應該提供了憑證和集群地址。
通過以下命令檢查 kubectl 是否知道集群地址及憑證:
kubectl config view
直接訪問 REST API
Kubectl 處理 apiserver 的定位和身份驗證。 如果要使用 curl 或 wget 等 http 客戶端或瀏覽器直接訪問 REST API,可以通過 多種方式查找和驗證:
- 以代理模式運行 kubectl。
- 推薦此方式。
- 使用已存儲的 apiserver 地址。
- 使用自簽名的證書來驗證 apiserver 的身份。杜絕 MITM 攻擊。
- 對 apiserver 進行身份驗證。
- 未來可能會實現(xiàn)智能化的客戶端負載均衡和故障恢復。
- 直接向 http 客戶端提供位置和憑據(jù)。
- 可選的方案。
- 適用于代理可能引起混淆的某些客戶端類型。
- 需要引入根證書到你的瀏覽器以防止 MITM 攻擊。
使用 kubectl proxy
以下命令以反向代理的模式運行 kubectl。它處理 apiserver 的定位和驗證。 像這樣運行:
kubectl proxy --port=8080
參閱 kubectl proxy 獲取更多詳細信息。
然后,你可以使用 curl、wget 或瀏覽器訪問 API,如果是 IPv6 則用 [::1] 替換 localhost, 如下所示:
curl http://localhost:8080/api/
輸出類似于:
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "10.0.1.149:443"
}
]
}不使用 kubectl proxy
使用 ?kubectl apply? 和 ?kubectl describe secret ...? 及 grep 和剪切操作來為 default 服務(wù)帳戶創(chuàng)建令牌,如下所示:
首先,創(chuàng)建 Secret,請求默認 ServiceAccount 的令牌:
kubectl apply -f - <接下來,等待令牌控制器使用令牌填充 Secret:
while ! kubectl describe secret default-token | grep -E '^token' >/dev/null; do
echo "waiting for token..." >&2
sleep 1
done捕獲并使用生成的令牌:
APISERVER=$(kubectl config view --minify | grep server | cut -f 2- -d ":" | tr -d " ")
TOKEN=$(kubectl describe secret default-token | grep -E '^token' | cut -f2 -d':' | tr -d " ")
curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure輸出類似于:
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "10.0.1.149:443"
}
]
}?jsonpath ?方法實現(xiàn):
APISERVER=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}')
TOKEN=$(kubectl get secret default-token -o jsonpath='{.data.token}' | base64 --decode)
curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure輸出類似于:
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "10.0.1.149:443"
}
]
}上面的例子使用了 ?--insecure? 參數(shù),這使得它很容易受到 MITM 攻擊。 當 kubectl 訪問集群時,它使用存儲的根證書和客戶端證書來訪問服務(wù)器 (它們安裝在 ?~/.kube? 目錄中)。 由于集群證書通常是自簽名的,因此可能需要特殊配置才能讓你的 http 客戶端使用根證書。
在一些集群中,apiserver 不需要身份驗證;它可能只服務(wù)于 localhost,或者被防火墻保護, 這個沒有一定的標準。
以編程方式訪問 API
Kubernetes 官方提供對 Go 和 Python 的客戶端庫支持。
Go 客戶端
- 想要獲得這個庫,請運行命令:?
go get K8S.io/client-go@kubernetes-?, 有關(guān)詳細安裝說明,請參閱 INSTALL.md。 請參閱 https://github.com/kubernetes/client-go 以查看支持的版本。 - 基于這個 client-go 客戶端庫編寫應用程序。 請注意,client-go 定義了自己的 API 對象,因此如果需要,請從 client-go 而不是從主存儲庫 導入 API 定義,例如,?
import "k8s.io/client-go/kubernetes"? 才是對的。
Go 客戶端可以像 kubectl CLI 一樣使用相同的 kubeconfig 文件 來定位和驗證 apiserver。可參閱 示例。
Python 客戶端
如果想要使用 Python 客戶端, 請運行命令:?pip install kubernetes?。參閱 Python Client Library page 以獲得更詳細的安裝參數(shù)。
Python 客戶端可以像 kubectl CLI 一樣使用相同的 kubeconfig 文件 來定位和驗證 apiserver,可參閱 示例。
從 Pod 中訪問 API
當你從 Pod 中訪問 API 時,定位和驗證 API 服務(wù)器會有些許不同。
請求重定向
重定向功能已棄用并被刪除。請改用代理(見下文)。
多種代理
使用 Kubernetes 時可能會遇到幾種不同的代理:
- kubectl 代理:
- 在用戶的桌面或 Pod 中運行
- 代理從本地主機地址到 Kubernetes apiserver
- 客戶端到代理將使用 HTTP
- 代理到 apiserver 使用 HTTPS
- 定位 apiserver
- 添加身份驗證頭部
- apiserver 代理:
- 內(nèi)置于 apiserver 中
- 將集群外部的用戶連接到集群 IP,否則這些 IP 可能無法訪問
- 運行在 apiserver 進程中
- 客戶端代理使用 HTTPS(也可配置為 http)
- 代理將根據(jù)可用的信息決定使用 HTTP 或者 HTTPS 代理到目標
- 可用于訪問節(jié)點、Pod 或服務(wù)
- 在訪問服務(wù)時進行負載平衡
- kube proxy:
- 運行在每個節(jié)點上
- 代理 UDP 和 TCP
- 不能代理 HTTP
- 提供負載均衡
- 只能用來訪問服務(wù)
- 位于 apiserver 之前的 Proxy/Load-balancer:
- 存在和實現(xiàn)因集群而異(例如 nginx)
- 位于所有客戶和一個或多個 apiserver 之間
- 如果有多個 apiserver,則充當負載均衡器
- 外部服務(wù)上的云負載均衡器:
- 由一些云提供商提供(例如 AWS ELB,Google Cloud Load Balancer)
- 當 Kubernetes 服務(wù)類型為 ?
LoadBalancer?時自動創(chuàng)建 - 只使用 UDP/TCP
- 具體實現(xiàn)因云提供商而異。
除了前兩種類型之外,Kubernetes 用戶通常不需要擔心任何其他問題。 集群管理員通常會確保后者的正確配置。
當前題目:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes訪問集群
本文鏈接:http://m.5511xx.com/article/dpshidh.html


咨詢
建站咨詢
