<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
下面列出了 kubectl 的所有命令以及其縮寫形式,供翻閱查詢。
kubectl 命令格式:
kubectl [command] [type] [Name] [flag]
all | events (ev) | podsecuritypolicies (psp) |
---|---|---|
certificatesigningrequests (csr) | horizontalpodautoscalers (hpa) | podtemplates |
clusterrolebindings | ingresses (ing) | replicasets (rs) |
clusterroles | jobs | replicationcontrollers (rc) |
clusters (valid only for federation apiservers) | limitranges (limits) | resourcequotas (quota) |
componentstatuses (cs) | namespaces (ns) | rolebindings |
configmaps (cm) | networkpolicies (netpol) | roles |
controllerrevisions | nodes (no) | secrets |
cronjobs | persistentvolumeclaims (pvc) | serviceaccounts (sa) |
customresourcedefinition (crd) | persistentvolumes (pv) | services (svc) |
daemonsets (ds) | poddisruptionbudgets (pdb) | statefulsets |
deployments (deploy) | podpreset | storageclasses |
endpoints (ep) | pods (po) |
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。
可以看到,存取方式有 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 中,即可進入控制檯。
我們可以叢集中的任意節點存取 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/
另外還有三個相關的 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-
這是一個簡單的 YAML 檔案:
apiVersion: v1 kind: Pod metadata: name: firstpod spec: containers: - image: nginx name: stan
k8s 的 YAML 必須包含四個部分:
在 $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存取設定的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45