通过kubeadm安装的kubernetes集群,etcd是通过pod形式运行的master节点,这个pod是启动的网络类型为host的container,和master 节点共享网络空间。这个pod是在kube-system这个namespace下, 我们可以通过命令查看一下具体内容。
etcd server信息
kubectl describe pod etcd-k8s-master -n kube-system
我们可以看到etcd的是run在node上的2379端口,服务端的证书都在node目录/etc/kubernetes/pki/etcd/, 数据都存储在/var/lib/etcd,知道这些信息后,我们可以通过etcdctl命令直接去操作etcd server。
etcdctl 访问etcd server
在你登录用户的.bashrc下配置好server信息,’认证证书,API version
vi ~/.bashrc
export ETCDCTL_ENDPOINTS=https://127.0.0.1:2379
export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt
export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/healthcheck-client.crt
export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/healthcheck-client.key
export ETCDCTL_API=3
source ~/.bashrc
配置完成后就可以直接通过命令访问etcd
etcdctl get --prefix --keys-only /
这条命令列举出所有etcd存储的key,可以看到k8s是存在/registry/这个目录下,包括了所有resource的信息(API version, namespace, pod, deployment, service ......)