中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Dashboard怎么管理Kubernetes集群與API訪問配置

發布時間:2022-04-01 13:42:53 來源:億速云 閱讀:200 作者:iii 欄目:開發技術

本篇內容主要講解“Dashboard怎么管理Kubernetes集群與API訪問配置”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Dashboard怎么管理Kubernetes集群與API訪問配置”吧!

Kubectl 命令大全

下面列出了 kubectl 的所有命令以及其縮寫形式,供翻閱查詢。

kubectl 命令格式:

kubectl [command] [type] [Name] [flag]
allevents (ev)podsecuritypolicies (psp)
certificatesigningrequests (csr)horizontalpodautoscalers (hpa)podtemplates
clusterrolebindingsingresses (ing)replicasets (rs)
clusterrolesjobsreplicationcontrollers (rc)
clusters (valid only for federation apiservers)limitranges (limits)resourcequotas (quota)
componentstatuses (cs)namespaces (ns)rolebindings
configmaps (cm)networkpolicies (netpol)roles
controllerrevisionsnodes (no)secrets
cronjobspersistentvolumeclaims (pvc)serviceaccounts (sa)
customresourcedefinition (crd)persistentvolumes (pv)services (svc)
daemonsets (ds)poddisruptionbudgets (pdb)statefulsets
deployments (deploy)podpresetstorageclasses
endpoints (ep)pods (po) 

安裝 Kubernetes-Dashboard

Kubernetes-Dashboard 是一個 管理 Kubernetes 集群的 Web UI,跟 kubectl 一樣,其后端是 API-Server,使用在線的 YAML 文件部署 Kubernetes-Dashboard :

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml

dashboard 創建后會在 kubernetes-dashboard 命名空間中。

root@instance-1:~# kubectl get pods --namespace=kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-856586f554-4nd9v   1/1     Running   0          9d
kubernetes-dashboard-78c79f97b4-288js        1/1     Running   0          9d

root@instance-1:~# kubectl get services --namespace=kubernetes-dashboard
NAME                            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper       ClusterIP   10.98.50.123     <none>        8000/TCP        9d
kubernetes-dashboard            NodePort    10.111.44.44     <none>        443/TCP   9d

由于其網絡默認是 NodePort 的方式,沒有配置外界打開,所以為了能夠被外界訪問,可以修改其 service:

kubectl edit service kubernetes-dashboard --namespace=kubernetes-dashboard
  ports:
  - nodePort: 30633
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  sessionAffinity: None
  type: NodePort

或者把 type 修改為 LoadBalancer。

在集群內網可以通過 443 訪問,在外網可以通過 30633 訪問,訪問方式是 https。

Dashboard怎么管理Kubernetes集群與API訪問配置

可以看到,訪問方式有 Token 和配置文件方式(kubeconfing),這兩者后面再講。

通過下面這條命令我們可以查看 Token:

kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token

復制,填寫到 Web UI 中,即可進入控制臺。

RESTful API

我們可以集群中的任意節點訪問 API-Server ,其端口是 6443。

API 可以使用 Token 和 證書方式 進行認證,我們可以使用上一小節查詢出來的 token,對 API 進行訪問:

curl https://k8smaster:6443/api/v1/pods -k --header "Authorization: bearer {此處填寫你的token}"

注:使用 -k 可以忽略證書問題;k8smaster 是筆者配置 hosts 的,具體要以你的 主節點 ip為準。

也可以使用證書訪問 API,其格式如下:

curl --cert /tmp/client.pem --key /tmp/client-key.pem \
--cacert /tmp/ca.pem -v -XGET \ 
https://k8smaster:6443/api/v1/pods

這里不多介紹 k8s 的 API,只介紹幾個對調試有用的 API。

GET /api/v1/namespaces/{namespace}/pods/{name}/exec

GET /api/v1/namespaces/{namespace}/pods/{name}/log

GET /api/v1/watch/namespaces/{namespace}/pods/{name}

鑒權

由于 API-Server 需要一定權限才能訪問,所以實際上用戶使用 kubectl 工具時,也需要權限才能執行命令。

kubectl auth can-i 命令用來確定一個用戶是否能夠訪問 API。

如果要確定當前用戶是否有權限訪問 deployments,可以使用:

kubectl auth can-i create deployments
kubectl auth can-i {命令}

如果要檢查其它用戶是否有權限,可以使用 --as

kubectl auth can-i create deployments --as ddddd
kubectl auth can-i create deployments --as ddddd --namespace kube-system

為了更加方便地獲得權限,我們可以使用 SelfSubjectAccessReview 這個 API 來獲得權限信息資源,它將 API 服務器鑒權公開給外部服務,其 API 說明文檔地址:

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#selfsubjectaccessreview-v1-authorization-k8s-io

另外還有三個相關的 API:

  • SubjectAccessReview - 對任意用戶的訪問進行評估,而不僅僅是當前用戶。 當鑒權決策被委派給 API 服務器時很有用。例如,kubelet 和擴展 API 服務器使用 它來確定用戶對自己的 API 的訪問權限。

  • LocalSubjectAccessReview - 與 SubjectAccessReview 類似,但僅限于特定的 名字空間。

  • SelfSubjectRulesReview - 返回用戶可在名字空間內執行的操作集的審閱。 用戶可以快速匯總自己的訪問權限,或者用于 UI 中的隱藏/顯示動作。

這里只需要了解,不需要深入。

注解

我們可以使用 Kubernetes 注解為對象附加任意的非標識的元數據,注解使用 annotations 標識。客戶端程序(例如工具和庫)能夠獲取這些元數據信息。

我們查看 dashboard 的相關 annotations :

kubectl describe services -n kubernetes-dashboard
... ...
Labels:                   k8s-app=kubernetes-dashboard
Annotations:              <none>
... ...

annotations 由 key/value 組成,類似 label,但是 annotations 支持一些特殊字符,可以用作構建發布鏡像時的信息、日志記錄等。

kubectl annotate service kubernetes-dashboard -n kubernetes-dashboard description='my test'
key=description

value=my test

重新查看 describe,可以看到:

Annotations:              description: my test

如果要覆蓋 key 的值,需要加上 --overwrite 。

如果要刪除一個 key:

kubectl annotate service kubernetes-dashboard description-

Pod YAML 結構

這是一個簡單的 YAML 文件:

apiVersion: v1
kind: Pod
metadata:
    name: firstpod
spec:
    containers:
    - image: nginx
      name: stan

k8s 的 YAML 必須包含四個部分:

  • apiVersion:API 組的版本

  • kind:創建的對象類型

  • metadata:元數據,name 字段必填

  • spec:怎么創建對象,如果是 pod,則 container 必填。

配置

在 $HOME/.kube/config 文件中存儲了 Kubernetes 的配置信息,可以直接打開文件查看,也可以通過 kubectl config view 查看(只顯示部分信息)。

前面我們訪問 API 時,使用了 token,現在我們可以通過這個 config,來創建證書文件,通過證書訪問。。

client 密鑰,就在這個 config 文件的 client-certificate-data 字段中存儲。

grep client-cert $HOME/.kube/config |cut -d" " -f 6

key,在 client-key-data 字段中存儲:

grep client-key-data $HOME/.kube/config |cut -d " " -f 6

API-Server 的公鑰(auth),就在 certificate-authority-data 字段中存儲:

grep certificate-authority-data $HOME/.kube/config |cut -d " " -f 6

意思就是三個重要的 密鑰數據,這里為了方便,分別使用 client、key、auth 三個變量存儲查詢的數據。

export client=(grep client-cert $HOME/.kube/config |cut -d" " -f 6)
export key=(grep client-key-data $HOME/.kube/config |cut -d " " -f 6)
export auth=(grep certificate-authority-data $HOME/.kube/config |cut -d " " -f 6)

創建證書文件:

echo $client | base64 -d - > ./client.pems
echo $key | base64 -d - > ./client-key.pem
echo $auth | base64 -d - > ./ca.pem

然后訪問的時候就可以通過證書安全地訪問 API-Server:

curl --cert ./client.pem --key ./client-key.pem --cacert ./ca.pem https://k8smaster:6443/api/v1/pod

到此,相信大家對“Dashboard怎么管理Kubernetes集群與API訪問配置”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

房产| 金昌市| 乐业县| 仙游县| 格尔木市| 孙吴县| 江孜县| 岚皋县| 昌黎县| 三亚市| 石阡县| 通化县| 贞丰县| 潍坊市| 民和| 郁南县| 山西省| 丰都县| 临猗县| 临颍县| 岫岩| 扎鲁特旗| 阜平县| 界首市| 金川县| 荃湾区| 内丘县| 天镇县| 兴隆县| 靖宇县| 海城市| 突泉县| 酒泉市| 北碚区| 岱山县| 河曲县| 肃北| 阿勒泰市| 保定市| 琼海市| 板桥市|