k8s的實現核心實際上就是通過讀寫etcd數據庫實現對資源的存儲,管理和控制。
k8s所有資源的本源都是存儲在etcd中的一個個鍵值對。
理論上可以觀察到etcd數據庫中的數據變化。具體的使用方式如下:
用$K8SPATH/hack/local-up-cluster.sh啟動一個k8s服務。這個可執行腳本中的68行定義了etcd的版本,默認是etcd3,可以修改為etcd2。
這個版本很重要,因為etcd3和etcd2是完全不同的兩個東西,兩者完全不兼容。
etcdctl工具是一個可以對etcd數據進行管理的命令行工具,這個工具在兩個不同的etcd版本下的行為方式也完全不同。
export ETCDCTL_API=2
export ETCDCTL_API=3
以上兩個語句分別將etcdctl訪問的etcd版本調整為2或者3,下面分別說明兩種不同的版本如何分別進行數據的訪問。
etcd2
在etcd2的情況下,對etcd數據的訪問如下:
etcdctl ls
可以逐級顯示其當前的存儲目錄,直至到key-value
etcd3
etcdctl get / --prefix --keys-only
這條指令的意思是獲取etcd中存儲的所有key,並且前綴為 ‘/’,其結果類似於:
/registry/apiregistration.k8s.io/apiservices/v1.
/registry/apiregistration.k8s.io/apiservices/v1.authentication.k8s.io
對其中一個特定的鍵進行訪問可以用一下方式進行:
etcdctl get /registry/apiregistration.k8s.io/apiservices/v1.
