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
    相关文章
    相关标签/搜索