1. Etcdpython
Etcd是Kubernetes集羣中的一個十分重要的組件,用於保存集羣全部的網絡配置和對象的狀態信息。在後面具體的安裝環境中,咱們安裝的etcd的版本是v3.1.5,整個kubernetes系統中一共有兩個服務須要用到etcd用來協同和存儲配置,分別是:web
注意:flannel操做etcd使用的是v2的API,而kubernetes操做etcd使用的v3的API,因此在下面咱們執行etcdctl
的時候須要設置ETCDCTL_API
環境變量,該變量默認值爲2json
2. 使用Etcd存儲Kubernetes對象信息centos
Kubernetes使用etcd v3的API操做etcd中的數據。全部的資源對象都保存在/registry
路徑下,以下:api
Kubernetes使用etcd v3的API操做etcd中的數據。全部的資源對象都保存在/registry
路徑下,以下:bash
ThirdPartyResourceData apiextensions.k8s.io apiregistration.k8s.io certificatesigningrequests clusterrolebindings clusterroles configmaps controllerrevisions controllers daemonsets deployments events horizontalpodautoscalers ingress limitranges minions monitoring.coreos.com namespaces persistentvolumeclaims persistentvolumes poddisruptionbudgets pods ranges replicasets resourcequotas rolebindings roles secrets serviceaccounts services statefulsets storageclasses thirdpartyresources
若是你還建立了CRD(自定義資源定義),則在此會出現CRD的API。 網絡
3. etcdide
Kubenretes1.6中使用etcd V3版本的API,使用etcdctl
直接ls
的話只能看到/kube-centos
一個路徑。須要在命令前加上ETCDCTL_API=3
這個環境變量才能看到kuberentes在etcd中保存的數據。spa
ETCDCTL_API=3 etcdctl get /registry/namespaces/default -w=json|python -m json.tool
若是是使用 kubeadm 建立的集羣,在 Kubenretes 1.11 中,etcd 默認使用 tls ,這時你能夠在 master 節點上使用如下命令來訪問 etcd :插件
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/peer.crt \ --key=/etc/kubernetes/pki/etcd/peer.key \ get /registry/namespaces/default -w=json | jq .
打印方法:
咱們使用kubectl命令獲取的kubernetes的對象狀態其實是保存在etcd中的,使用下面的腳本能夠獲取etcd中的全部kubernetes對象的key:
注意,咱們使用了ETCD v3版本的客戶端命令來訪問etcd。
#!/bin/bash # Get kubernetes keys from etcd export ETCDCTL_API=3 keys=`etcdctl get /registry --prefix -w json|python -m json.tool|grep key|cut -d ":" -f2|tr -d '"'|tr -d ","` for x in $keys;do echo $x|base64 -d|sort done