如何将主机映射添加到 minikube 的 /etc/host?
How to add host mapping to /etc/host of the minikube?
我的 minikube
环境如下:-
- 主持人OS:
CentOS Linux release 7.7.1908 (Core)
- Docker:
Docker Engine - Community 20.10.7
- minikube:
minikube version: v1.20.0
我想向 minikube
容器内的 /etc/hosts
添加一些额外的主机映射(5+ IP 和名称)。然后我使用 minikube ssh
进入 shell 并尝试 echo "172.17.x.x my.some.host" >> /etc/hosts
。出现错误 -bash: /etc/hosts: Permission denied
,因为登录此 shell 的用户是 docker
,而不是 root
。
我还发现在主机上有一个名为 minikube
运行 的 docker 容器,使用 docker container ls
。甚至我也可以通过使用 docker exec -it -u root minikube /bin/bash
使用 root
进入这个容器。我知道这是一种调整,可能是一种不好的做法。尤其是任务太多了。
关于docker
和docker-compose
分别提供--add-host
和extra_hosts
添加主机名映射,minikube
是否提供?在 minikube
and/or 系统管理员的良好做法中,是否有实现此目的的良好做法?
编辑 1
echo 172.17.x.x my.some.host > ~/.minikube/files/etc/hosts
后启动minikube
,出现如下错误:-
[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp: lookup localhost on 8.8.8.8:53: no such host.
Unfortunately, an error has occurred:
timed out waiting for the condition
This error is likely caused by:
- The kubelet is not running
- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
- 'systemctl status kubelet'
- 'journalctl -xeu kubelet'
Additionally, a control plane component may have crashed or exited when started by the container runtime.
To troubleshoot, list all containers using your preferred container runtimes CLI.
Here is one example how you may list all Kubernetes containers running in docker:
- 'docker ps -a | grep kube | grep -v pause'
Once you have found the failing container, you can inspect its logs with:
- 'docker logs CONTAINERID'
然后我使用 vi
在 ~/.minikube/files/etc/hosts
创建一个完整的 hosts
文件,如下所示:-
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.x.x my.some.host1
172.17.x.y my.some.host2
...
此时minikube
正常启动
Minikube 有一个 built-in sync mechanism 可以部署所需的 /etc/hosts,示例如下:
mkidr -p ~/.minikube/files/etc
echo 127.0.0.1 localhost > ~/.minikube/files/etc/hosts
minikube start
然后去检查它是否正常工作:
minikube ssh
进入容器后:
cat /etc/hosts
我的 minikube
环境如下:-
- 主持人OS:
CentOS Linux release 7.7.1908 (Core)
- Docker:
Docker Engine - Community 20.10.7
- minikube:
minikube version: v1.20.0
我想向 minikube
容器内的 /etc/hosts
添加一些额外的主机映射(5+ IP 和名称)。然后我使用 minikube ssh
进入 shell 并尝试 echo "172.17.x.x my.some.host" >> /etc/hosts
。出现错误 -bash: /etc/hosts: Permission denied
,因为登录此 shell 的用户是 docker
,而不是 root
。
我还发现在主机上有一个名为 minikube
运行 的 docker 容器,使用 docker container ls
。甚至我也可以通过使用 docker exec -it -u root minikube /bin/bash
使用 root
进入这个容器。我知道这是一种调整,可能是一种不好的做法。尤其是任务太多了。
关于docker
和docker-compose
分别提供--add-host
和extra_hosts
添加主机名映射,minikube
是否提供?在 minikube
and/or 系统管理员的良好做法中,是否有实现此目的的良好做法?
编辑 1
echo 172.17.x.x my.some.host > ~/.minikube/files/etc/hosts
后启动minikube
,出现如下错误:-
[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp: lookup localhost on 8.8.8.8:53: no such host.
Unfortunately, an error has occurred:
timed out waiting for the condition
This error is likely caused by:
- The kubelet is not running
- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
- 'systemctl status kubelet'
- 'journalctl -xeu kubelet'
Additionally, a control plane component may have crashed or exited when started by the container runtime.
To troubleshoot, list all containers using your preferred container runtimes CLI.
Here is one example how you may list all Kubernetes containers running in docker:
- 'docker ps -a | grep kube | grep -v pause'
Once you have found the failing container, you can inspect its logs with:
- 'docker logs CONTAINERID'
然后我使用 vi
在 ~/.minikube/files/etc/hosts
创建一个完整的 hosts
文件,如下所示:-
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.x.x my.some.host1
172.17.x.y my.some.host2
...
此时minikube
正常启动
Minikube 有一个 built-in sync mechanism 可以部署所需的 /etc/hosts,示例如下:
mkidr -p ~/.minikube/files/etc
echo 127.0.0.1 localhost > ~/.minikube/files/etc/hosts
minikube start
然后去检查它是否正常工作:
minikube ssh
进入容器后:
cat /etc/hosts