2017-01-27 1 views
2

Я использую незаменимые скрипты от kargo для создания моего кластера. Я не могу найти, где данные хранятся в etcd3, несмотря на просмотр подробных журналов из apirusver.Невозможно найти данные Кубернетеса apiserver в etcd3

Вот что я вижу hyperkube apiserver журналы:

$ docker logs k8s_kube-apiserver.fd19548d_kube-apiserver-kube-master-01_kube-system_2f6ad6b0bf81ca6a0e2b4d499a25fc89_aa25196e 
[[ SNIP ]] 
I0127 23:31:55.871267  1 storage_factory.go:242] storing { podtemplates} in v1, reading as __internal from { /registry [https://10.60.68.11:2379 https://10.60.68.39:2379 https://10.60.68.35:2379] /etc/ssl/etcd/ssl/node-kube-master-01-key.pem /etc/ssl/etcd/ssl/node-kube-master-01.pem /etc/ssl/etcd/ssl/ca.pem true 1000 <nil>} 
I0127 23:31:55.875975  1 storage_factory.go:242] storing { events} in v1, reading as __internal from { /registry [https://10.60.68.11:2379 https://10.60.68.39:2379 https://10.60.68.35:2379] /etc/ssl/etcd/ssl/node-kube-master-01-key.pem /etc/ssl/etcd/ssl/node-kube-master-01.pem /etc/ssl/etcd/ssl/ca.pem true 1000 <nil>} 
I0127 23:31:55.876169  1 reflector.go:234] Listing and watching *api.PodTemplate from k8s.io/kubernetes/pkg/storage/cacher.go:215 
I0127 23:31:55.877950  1 compact.go:55] compactor already exists for endpoints [https://10.60.68.11:2379 https://10.60.68.39:2379 https://10.60.68.35:2379] 
I0127 23:31:55.878148  1 storage_factory.go:242] storing { limitranges} in v1, reading as __internal from { /registry [https://10.60.68.11:2379 https://10.60.68.39:2379 https://10.60.68.35:2379] /etc/ssl/etcd/ssl/node-kube-master-01-key.pem /etc/ssl/etcd/ssl/node-kube-master-01.pem /etc/ssl/etcd/ssl/ca.pem true 1000 <nil>} 
I0127 23:31:55.879372  1 compact.go:55] compactor already exists for endpoints [https://10.60.68.11:2379 https://10.60.68.39:2379 https://10.60.68.35:2379] 

hyperkube apiserver запускается с этими аргументами:

$ docker inspect k8s_kube-apiserver.b6395694_kube-apiserver-kube-master-01_kube-system_2f6ad6b0bf81ca6a0e2b4d499a25fc89_4338b366 
[ 
    { 
     "Id": "33c76fa64bbd5d5a656e329cf87ed3707077659c69dc281127751f594460242b", 
     "Created": "2017-01-27T23:35:10.691147667Z", 
     "Path": "/hyperkube", 
     "Args": [ 
      "apiserver", 
      "--advertise-address=10.60.68.23", 
      "--etcd-servers=https://10.60.68.11:2379,https://10.60.68.39:2379,https://10.60.68.35:2379", 
      "--etcd-quorum-read=true", 
      "--etcd-cafile=/etc/ssl/etcd/ssl/ca.pem", 
      "--etcd-certfile=/etc/ssl/etcd/ssl/node-kube-master-01.pem", 
      "--etcd-keyfile=/etc/ssl/etcd/ssl/node-kube-master-01-key.pem", 
      "--insecure-bind-address=127.0.0.1", 
      "--apiserver-count=3", 
      "--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota", 
      "--service-cluster-ip-range=10.233.0.0/18", 
      "--service-node-port-range=30000-32767", 
      "--client-ca-file=/etc/kubernetes/ssl/ca.pem", 
      "--basic-auth-file=/etc/kubernetes/users/known_users.csv", 
      "--tls-cert-file=/etc/kubernetes/ssl/apiserver.pem", 
      "--tls-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem", 
      "--token-auth-file=/etc/kubernetes/tokens/known_tokens.csv", 
      "--service-account-key-file=/etc/kubernetes/ssl/apiserver-key.pem", 
      "--secure-port=443", 
      "--insecure-port=8080", 
      "--v=4", 
      "--allow-privileged=true", 
      "--cloud-provider=openstack", 
      "--cloud-config=/etc/kubernetes/cloud_config", 
      "--anonymous-auth=False" 
     ], 

Нет, где это переопределить значение по умолчанию etcd префикс /registry. Я не знаю, где хранитель данных хранит данные.

$ docker exec -it etcd3 etcdctl --peers https://10.60.68.11:2379 ls /registry 
Error: 100: Key not found (/registry) [163] 
+0

Похоже, что ваш etcd не был инициализирован вообще. Это обычно вызвано неправильно настроенным сервером api. Можете ли вы проверить журналы своего сервера api, чтобы узнать, не говорит ли вам что-либо по этой проблеме? –

+0

См. Следующий ответ: [link] (https://stackoverflow.com/questions/43978998/kubernetes-flannel-etcd-not-upading/43983388#43983388) –

ответ

1

Если ваша система настроена правильно, имейте в виду, что есть некоторые изменения с etcd2 на etcd3. Например, ключевое пространство в etcd3 теперь является плоским, поэтому в отличие от etcd2 больше нет каталогов. Вместо использования команды etcdctl 'ls', как показано выше, вместо этого используйте команду «get» (и убедитесь, что команда etcdctl использует v3 api, имея установленную переменную среды ETCDCTL_API = 3).

1

Чтобы получить ключи и значения, сохраненные в etcd v3 по kubernetes:

ETCDCTL_API=3 etcdctl --endpoints=http://localhost:2379 get --prefix /registry 

Чтобы получить 1 указанный ключ и значение из etcd v3, например:

ETCDCTL_API=3 etcdctl --endpoints=http://localhost:2379 get /registry/services/specs/default/kubernetes 

основе: https://github.com/coreos/etcd/blob/master/Documentation/dev-guide/interacting_v3.md

0
ETCDCTL_API=3 etcdctl --endpoints=http://localhost:2379 get/--prefix --keys-only 
+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - [Из обзора] (/ review/low-quality-posts/17348813) –

Смежные вопросы