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