k8s 學習筆記 etcd


 

1. Etcdpython

 

Etcd是Kubernetes集羣中的一個十分重要的組件,用於保存集羣全部的網絡配置和對象的狀態信息。在後面具體的安裝環境中,咱們安裝的etcd的版本是v3.1.5,整個kubernetes系統中一共有兩個服務須要用到etcd用來協同和存儲配置,分別是:web

  • 網絡插件flannel、對於其它網絡插件也須要用到etcd存儲網絡的配置信息
  • kubernetes自己,包括各類對象的狀態和元信息配置

注意: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
    相關文章
    相關標籤/搜索