日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)kubernetes教程:Kubernetes訪問集群

使用 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 時可能會遇到幾種不同的代理:

  1. kubectl 代理:
    • 在用戶的桌面或 Pod 中運行
    • 代理從本地主機地址到 Kubernetes apiserver
    • 客戶端到代理將使用 HTTP
    • 代理到 apiserver 使用 HTTPS
    • 定位 apiserver
    • 添加身份驗證頭部
  2. apiserver 代理:
    • 內(nèi)置于 apiserver 中
    • 將集群外部的用戶連接到集群 IP,否則這些 IP 可能無法訪問
    • 運行在 apiserver 進程中
    • 客戶端代理使用 HTTPS(也可配置為 http)
    • 代理將根據(jù)可用的信息決定使用 HTTP 或者 HTTPS 代理到目標
    • 可用于訪問節(jié)點、Pod 或服務(wù)
    • 在訪問服務(wù)時進行負載平衡
  3. kube proxy:
    • 運行在每個節(jié)點上
    • 代理 UDP 和 TCP
    • 不能代理 HTTP
    • 提供負載均衡
    • 只能用來訪問服務(wù)
  4. 位于 apiserver 之前的 Proxy/Load-balancer:
    • 存在和實現(xiàn)因集群而異(例如 nginx)
    • 位于所有客戶和一個或多個 apiserver 之間
    • 如果有多個 apiserver,則充當負載均衡器
  5. 外部服務(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