【问题标题】:Running Kubernetes Locally via Docker documentation seems not accurate通过 Docker 文档在本地运行 Kubernetes 似乎不准确
【发布时间】:2016-10-05 06:35:03
【问题描述】:

我目前正在尝试按照以下说明通过 docker 实例运行 kubernetes:http://kubernetes.io/docs/getting-started-guides/docker/

运行时遇到如下错误:

I0605 16:01:38.380662    7589 manager.go:175] Version: {KernelVersion:3.16.0-4-amd64 ContainerOsVersion:Debian GNU/Linux 8 (jessie) DockerVersion:1.11.2 CadvisorVersion: CadvisorRevision:}
I0605 16:01:38.382052    7589 server.go:344] Using root directory: /var/lib/kubelet
I0605 16:01:38.384476    7589 server.go:673] Adding manifest file: /etc/kubernetes/manifests-multi
I0605 16:01:38.384553    7589 file.go:47] Watching path "/etc/kubernetes/manifests-multi"
I0605 16:01:38.384584    7589 server.go:683] Watching apiserver
W0605 16:01:38.397857    7589 kubelet.go:508] Hairpin mode set to "promiscuous-bridge" but configureCBR0 is false, falling back to "hairpin-veth"
I0605 16:01:38.397898    7589 kubelet.go:380] Hairpin mode set to "hairpin-veth"
I0605 16:01:38.435726    7589 manager.go:212] Setting dockerRoot to /var/lib/docker
I0605 16:01:38.578912    7589 plugins.go:56] Registering credential provider: .dockercfg
I0605 16:01:38.593302    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/aws-ebs"
I0605 16:01:38.593329    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/empty-dir"
I0605 16:01:38.593341    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/gce-pd"
I0605 16:01:38.593359    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/git-repo"
I0605 16:01:38.593374    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/host-path"
I0605 16:01:38.593385    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/nfs"
I0605 16:01:38.593396    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/secret"
I0605 16:01:38.593407    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/iscsi"
I0605 16:01:38.593423    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/glusterfs"
I0605 16:01:38.593440    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/persistent-claim"
I0605 16:01:38.593451    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/rbd"
I0605 16:01:38.593464    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/cinder"
I0605 16:01:38.593475    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/cephfs"
I0605 16:01:38.593489    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/downward-api"
I0605 16:01:38.593503    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/fc"
I0605 16:01:38.593523    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/flocker"
I0605 16:01:38.593544    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/azure-file"
I0605 16:01:38.593565    7589 plugins.go:291] Loaded volume plugin "kubernetes.io/configmap"
E0605 16:01:38.594341    7589 event.go:202] Unable to write event: 'Post http://localhost:8080/api/v1/namespaces/default/events: dial tcp 127.0.0.1:8080: connection refused' (may retry after sleeping)
I0605 16:01:38.594390    7589 server.go:645] Started kubelet
E0605 16:01:38.594514    7589 kubelet.go:956] Image garbage collection failed: unable to find data for container /
I0605 16:01:38.594568    7589 server.go:109] Starting to listen on 0.0.0.0:10250
I0605 16:01:38.595508    7589 server.go:126] Starting to listen read-only on 0.0.0.0:10255
E0605 16:01:38.598094    7589 kubelet.go:1016] Failed to start ContainerManager system validation failed - Following Cgroup subsystem not mounted: [memory]
I0605 16:01:38.598118    7589 manager.go:123] Starting to sync pod status with apiserver
I0605 16:01:38.599540    7589 kubelet.go:2356] Starting kubelet main sync loop.
I0605 16:01:38.599560    7589 kubelet.go:2365] skipping pod synchronization - [Failed to start ContainerManager system validation failed - Following Cgroup subsystem not mounted: [memory] container runtime is down]
E0605 16:01:38.676953    7589 manager.go:212] Docker container factory registration failed: docker found, but not using native exec driver.
I0605 16:01:38.678941    7589 factory.go:97] Registering Raw factory
I0605 16:01:38.779312    7589 manager.go:1003] Started watching for new ooms in manager
I0605 16:01:38.782008    7589 oomparser.go:182] oomparser using systemd
I0605 16:01:38.782836    7589 manager.go:256] Starting recovery of all containers
I0605 16:01:38.784928    7589 kubelet.go:2754] Recording NodeHasSufficientDisk event message for node psyduck
I0605 16:01:38.784957    7589 manager.go:261] Recovery completed
I0605 16:01:38.784971    7589 kubelet.go:1134] Attempting to register node psyduck
I0605 16:01:38.786405    7589 kubelet.go:1137] Unable to register psyduck with the apiserver: Post http://localhost:8080/api/v1/nodes: dial tcp 127.0.0.1:8080: connection refused
I0605 16:01:39.037006    7589 kubelet.go:2754] Recording NodeHasSufficientDisk event message for node psyduck
I0605 16:01:39.037071    7589 kubelet.go:1134] Attempting to register node psyduck
I0605 16:01:39.037988    7589 kubelet.go:1137] Unable to register psyduck with the apiserver: Post http://localhost:8080/api/v1/nodes: dial tcp 127.0.0.1:8080: connection refused

好的,应用程序似乎正在尝试联系 apiserver。查看 hyperkube 可执行文件后,它看起来有一个可以运行的apiserver 服务,尝试手动启动它,它现在要求一个正在运行的etcd 实例。我继续挖掘文档,发现旧版本的文档要求启动并运行 etcd:

https://github.com/kubernetes/kubernetes/blob/v1.0.6/docs/getting-started-guides/docker.md

此时我问自己我的配置或文档有什么问题吗?有人能够按照本文档运行 kubernetes 吗?我在这里错过了什么吗?

【问题讨论】:

  • etcdapiserver 应该由 Kubelet 自动启动,因为它们已被 that docker image 注册为插件 pod。

标签: kubernetes


【解决方案1】:

您运行的是哪个版本的 Docker?日志行

E0605 16:01:38.676953    7589 manager.go:212] Docker container factory registration failed: docker found, but not using native exec driver.

让我觉得你可能正在运行 Docker 1.11,Kubernetes 1.2 不支持它(Kubernetes 1.2 的推荐版本是 Docker v1.9.1)。

【讨论】:

  • 应更新文档以包含此内容。我提交了issue
  • 我将 docker 降级到 1.9.1 但仍然遇到错误。我发现这个github.com/kubernetes/kubernetes/issues/9837 出现以下错误:kubelet.go:1016] 无法启动 ContainerManager 系统验证失败 - 未安装以下 Cgroup 子系统:[memory] ​​会尝试告诉你
  • 好的,所以当我在 jessie 上时,我必须传递以下参数才能使其工作:GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
  • 有一些 dependencies/requirements 用于运行 Kubelet,但它们的文档记录不是很好。在您的情况下,正如您已经发现的那样,需要挂载 cgroup 内存子系统才能运行 kubelet。
猜你喜欢
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 2012-05-26
  • 1970-01-01
  • 2021-04-25
  • 2019-01-29
相关资源
最近更新 更多