如果您想了解【原创】docker&kubernetes问题总结的相关知识,那么本文是一篇不可错过的文章,我们将对kubernetesindocker进行全面详尽的解释,并且为您提供关于(Kuberne
如果您想了解【原创】docker & kubernetes 问题总结的相关知识,那么本文是一篇不可错过的文章,我们将对kubernetes in docker进行全面详尽的解释,并且为您提供关于(Kubernetes Minikube)无法从本地注册表获取docker镜像、docker for mac 安装 kubernetes、kubernetes dashboard、Docker Kubernetes 容器依赖、docker – Kubectl:Kubernetes与minikube超时的有价值的信息。
本文目录一览:- 【原创】docker & kubernetes 问题总结(kubernetes in docker)
- (Kubernetes Minikube)无法从本地注册表获取docker镜像
- docker for mac 安装 kubernetes、kubernetes dashboard
- Docker Kubernetes 容器依赖
- docker – Kubectl:Kubernetes与minikube超时
【原创】docker & kubernetes 问题总结(kubernetes in docker)
1、entrypoint & cmd 指令的区别
这主要考察 Dockerfile 良好实践中关于容器启动时运行的命令。
entrypoint 和 cmd 命令都是设置容器启动时要执行的命令,但用法稍有不同。entrypoint 和 cmd 指令都是在 Dockerfile 中定义,但在镜像构建过程中并不会被执行,只有当容器启动时,entrypoint 和 cmd 指令设置的命令才会被执行。Dockerfile 中可以有多个 entrypoint 指令,但生效的只有最后一个 entrypoint 指令,cmd 指令也类似,两者的区别主要如下:
entrypoint 指令一般用来设置容器启动后要执行的命令,这对容器来说,往往是固定不变的。
cmd 指令一般用来设置容器启动后执行命令的默认参数,这对容器来说,往往是可以改变的,cmd 能够被 docker run 后面跟的命令行参数替换,一般而言,两者是可以结合使用的。
举个例子
FROM baseimage:v1.0
ENTRYPOINT ["/usr/sbin/nginx"]
CMD [""]
从以上 Dockerfile 设置的 entrypoint 和 cmd 指令来看,容器启动时会运行 nginx 进程,而 cmd 指令可以在执行 docker run 传入参数进行覆盖,如 docker run --name:** -p **:** -g "daemon off",其中 -g "daemon off" 将会被作为命令参数追加到 entrypoint 后面的指令,也就是说最后容器的启动命令为:/usr/sbin/nginx -g "daemon off;",以前台进程来运行 nginx 进程。
2、如何覆盖 entrypoint 和 cmd 指令
这个问题是考察 entrypoint 和 cmd 的格式
CMD 有三种格式:
(1) Exec 格式:CMD ["executabel", "param1", "param2"],这是 CMD 的推荐格式
(2) CMD ["param1", "param2"],这种模式和 entrypoint 结合使用,为 entrypoint 提供额外的参数,此时 entrypoint 必须使用 exec 格式。
(3) Shell 格式:CMD command param1 param2
ENTRYPOINT 有两种格式:
(1) Exec 格式:ENTRYPOINT ["executable", "param1", "param2"],这是 ENTRYPOINT 的推荐方式
(2) Shell 格式:ENTRYPOINT command param1 param2
其中,CMD 无论是哪种格式,都会被 docker run 命令带的参数直接覆盖
而 ENTRYPOINT 无论是哪种格式,ENTRYPOINT 指令一定会被执行,并不会被覆盖,但 ENTRYPOINT 在选择格式时必须格外小心,因为这两种格式的效果差别很大。
Exec 格式
ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。
Shell 格式
ENTRYPOINT 的 shell 格式会忽略任何 CMD 或者 docker run 提供的任何参数。
3、ADD 和 COPY 指令有什么区别?推荐使用哪种方式
这几道面试题都是 Dockerfile 良好实践中的知识点,这道题主要考察在构建镜像时,如何向镜像拷贝文件。
ADD 指令
ADD 指令的功能是将主机构建环境(上下文)目录中的文件和目录,拷贝到镜像中,如果源文件是个归档文件(压缩文件,如 tar, gzip, bzip2),ADD 指令会自动进行解压,如:
ADD /foo.tar.gz /tmp/
上述指令会将 foo.tar.gz 压缩文件解压到容器的 /tmp 目录下。
COPY 指令
COPY 指令和 ADD 指令类似,都是负责拷贝文件或者目录到容器里,但 COPY 指令功能更简洁和易懂,COPY 是 ADD 的一种简化版本,目的在于满足大多数人复制文件到容器的需求,在大多数情况下,都建议使用 COPY 指令,除非你明确需要 ADD 指令。
4、sed、grep 和 awk 命令的区别
这道是考察 linux 常见运维命令。
简单理解,grep 命令主要用于关键字的筛选,sed 指令是以行为单位的文本编辑工具,而 awk 指令通过指定分割符将一行(一条记录)划分为多个字段,以字段为单位来处理文本,一般结合 grep 命令来使用,比如只打印第一列,如:cat /etc/hosts | grep *** | awk ''{print $1}'',更详细的说明可以参考以下文档:
sed grep 和 awk 的区别
5、两个 namespace 如何进行通信
这道题主要考察 Docker 主机两个 namespace(容器)或者是容器与主机如何进行通信的原理。
我们都知道,Docker 是基于 LXC 容器技术 namespace 来实现资源的隔离,基于 LXC 容器技术 cgroups 来实现资源的限制,Docker 采用虚拟网络设置(Virtual Network Device)的方式,将不同命名空间的网络设备连接到一起,这种设备对都是成对存在的,一端作为容器的网卡 eth0,一端连接到宿主机上的 docker 网桥 veth,从而实现 Docker 主机上不同 namespace 通信,详情可见下图:
或者参考如下文档:docker namespace
6、简述 Docker 如何用 namespace 来进行资源隔离
这道题主要也是考察 namespace 相关的知识。
Docker 主要通过六大 Namespace 来实现资源的隔离,如下:
(1) Mount Namespace,挂载命名空间,用来隔离挂载目录,让不同 Namespace 拥有独立的挂载结构,而程序中对挂载信息的修改不会影响到其他 Namespace 中程序的运行。
(2) UTS Namespace,UTS Namespace,用来隔离主机名和域名,通过 UTS Namespace,让不同 Namespace 拥有独立的主机名称和网络访问域名。
(3) IPC Namespace,进程通信命名空间,用来隔离进程间通信,主要作用于 消息队列、信号量或者是管道,IPC 只能做到同一个命名空间进行通信,无法做到不同命名空间进行信息交换通信。
(4) PID Namespace,进程命名空间,用来隔离进程的运行信息,PID Namespace 让命名空间拥有独立的进程号管理。
(5) Networt Namespace,网络命名空间,用来隔离网络协议栈,包括网络设备接口、IPV4 和 IPV6 协议等。
(6) User Namespace,用户命名空间,用来隔离用户和用户组信息,通过严格的用户隔离机制,避免 Namespace 中的程序直接操作到宿主机或者其他 Namespace 中的用户。
除了 Namespace ,还有一项核心技术 Cgroups(控制组),可以参考这篇博客:Docker 底层技术架构
7、glusterfs 分布式存储元数据不一致时,如何恢复处理
这道是考察存储相关的知识。
对存储底层了解的不多,因此到时这道题我就简单粗暴地说重启 glusterfs 服务进程,明显没有 get 到面试官的点。
后来查阅相关的资料,说是跟时间戳有关系,但本人也没有验证过,详细可以参考这篇博客:glusterfs 数据不一致处理
8、service 对外提供服务的方式有几种
这道是考察外部如何访问 k8s 集群内的 service 服务。
目前来说总共有以下 4 种方式:
NodePort 方式
这种方式会将 Service 的端口映射到集群内的所有的 node 节点,集群内的所有 node 节点都会起一个相同的随机端口,通过访问:${任一 node 节点 IP}:${nodeport 端口} 就可以访问到 k8s 集群内指定的 service 服务了,iptables 会捕获这种方式的请求,根据 iptables 中的规则转发到后端具体的 pod 实例上,这种方式简单,但会占用 node 节点的端口资源,并且 nodeport 没有一个负载均衡器进行路由分发,这也就衍生了第二种方式。
LoadBalancer 方式
这种方式,在 nodeport 的外部搭建一个负载均衡器(云服务提供商),但 LoadBalancer 需要 k8s 集群跑在支持的 Cloud Provider 上,这对于企业内部运行在私有云上的 k8s 集群不太适合。
Ingress 方式
Ingress 主要有两大组件, Ingress 和 Ingress Controller,其中 Ingress 解决的是服务和域名的对应问题,基本上一个 Ingress 对象,通过 yaml 文件进行创建和更新,而 Ingress Controller 是将 Ingress 的这种变化动态生成一段 nginx 的配置,并通过 apiserver 更新到 nginx 这个 pod 中,并自动 reload。
Router 方式
这种方式是 Openshift 特有的方式,通过为 k8s 集群内的每个 service 对象生成一个 Router 对象,就能实现外界访问 k8s 集群内的 service 服务了。
9、ovs 访问外部服务 ovs 网桥到物理网卡是如何连接的
这道是考察 sdn 网络 openvswitch 的架构和组成。
正常跨节点之间的通信是通过 vxlan 隧道 或者是 gre 连接来完成,见下图:
但如果集群内的容器要访问外部服务,是通过 ovs 的 tun0 端口来完成。
(Kubernetes Minikube)无法从本地注册表获取docker镜像
我构建一个图像并标记它,然后将其推送到本地注册表,它成功推送,我也可以从注册表中拉出它也是当我运行curl得到标签列表我得到结果,这是我做的
1- docker build -t 127.0.0.1:5000/eliza/console:0.0.1 . 2- docker run -d -p 5000:5000 --name registry registry:2 3- docker tag a3703d02a199 127.0.0.1:5000/eliza/console:0.0.1 4- docker push 127.0.0.1:5000/eliza/console:0.0.1 5- curl -X GET http://127.0.0.1:5000/v2/eliza/console/tags/list
以上所有步骤都运行正常,没有任何问题.
我的问题是当我运行minikube并尝试在其中的本地注册表中访问此图像
所以,当我运行下一个命令
1- sudo minikube start --insecure-registry 127.0.0.1:5000 2- eval $(minikube docker-env) 3- minikube ssh 4- curl -X GET http://127.0.0.1:5000/v2/eliza/console/tags/list
在最后一步(第4点),它给了我下一条消息
curl: (7) Failed to connect to 127.0.0.1 port 5000: Connection refused
所以我可以从我的机器访问图像注册表,但不能从minikube访问,当我在minikube上使用Kubernetes部署这个图像并且由于无法连接到http://127.0.0.1:5000而导致部署失败时,我当然会遇到问题
你能帮我配置minikube来查看我的本地注册表,这样我的问题就能解决,然后我可以成功地使用kubernetes将图像部署到minikube吗?
UPDATE
我正在使用这个yaml文件(我命名为ConsolePre.yaml)来使用kubernetes部署我的图像
apiVersion: v1 kind: Service Metadata: name: tripbru-console labels: app: tripbru-console spec: ports: - port: 9080 targetPort: 9080 nodePort: 30181 selector: app: tripbru-console tier: frontend type: NodePort --- apiVersion: extensions/v1beta1 kind: Deployment Metadata: name: tripbru-console labels: app: tripbru-console spec: strategy: type: Recreate template: Metadata: labels: app: tripbru-console tier: frontend spec: containers: - image: docker.local:5000/eliza/console:0.0.1 name: tripbru-console ports: - containerPort: 9080 name: tripbru-console
当我运行下一个命令来应用更改
sudo kubectl apply -f /PATH_TO_YAML_FILE/ConsolePre.yaml
结果是
NAME READY STATUS RESTARTS AGE po/tripbru-console-1655054400-x3g87 0/1 ErrImagePull 0 1m
当我运行describe命令时
sudo kubectl describe pod tripbru-console-1655054400-x3g87
我在描述结果中找到了下一条消息
Error response from daemon: {“message”:”Get
07001: dial tcp: lookup docker.local on
10.0.2.3:53: read udp 10.0.2.15:57792->10.0.2.3:53: I/O timeout”}
我在minikube / etc / hosts中配置了docker.local xxx.xxx.xx.4,所以我不知道10.0.2.3:53和10.0.2.15:57792来自哪里.
那我怎么能解决这个问题呢.
谢谢 :)
因此,如果您的机器IP是192.168.0.101.然后下面的工作
1- docker build -t 127.0.0.1:5000/eliza/console:0.0.1 . 2- docker run -d -p 5000:5000 --name registry registry:2 3- docker tag a3703d02a199 127.0.0.1:5000/eliza/console:0.0.1 4- docker push 127.0.0.1:5000/eliza/console:0.0.1 5- curl -X GET http://127.0.0.1:5000/v2/eliza/console/tags/list
因为docker run将注册表映射到127.0.0.1:5000和192.168.0.101:5000.现在在你的机器上只有这个127.0.0.1可以工作.现在你用的时候
3- minikube ssh
你进入minikube机器并且没有在127.0.0.1:5000上运行的注册表.所以错误.使用机器机器IP在本机内无法访问注册表.
我通常解决这个问题的方法是在本地和其他VM中使用主机名.
所以在你的机器上在/ etc / hosts中创建一个条目
docker.local 127.0.0.1
并将命令更改为
1- docker build -t docker.local:5000/eliza/console:0.0.1 . 2- docker run -d -p 5000:5000 --name registry registry:2 3- docker tag a3703d02a199 docker.local:5000/eliza/console:0.0.1 4- docker push docker.local:5000/eliza/console:0.0.1 5- curl -X GET http://docker.local:5000/v2/eliza/console/tags/list
然后当你使用minikube ssh时,在/ etc / hosts中为docker.local创建一个条目
docker.local 192.168.0.101
然后curl -X GET http://docker.local:5000 / v2 / eliza / console / tags / list
编辑-1
对于TLS问题,您需要在minikube中停止docker服务
systemctl stop docker
然后编辑/etc/systemd/system/docker.service.d/10-machine.conf并进行更改
ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock –tlsverify –tlscacert /etc/docker/ca.pem –tlscert /etc/docker/server.pem –tlskey /etc/docker/server-key.pem –label provider=virtualBox –insecure-registry 10.0.0.0/24
至
ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock –tlsverify –tlscacert /etc/docker/ca.pem –tlscert /etc/docker/server.pem –tlskey /etc/docker/server-key.pem –label provider=virtualBox –insecure-registry 10.0.0.0/24 –insecure-registry docker.local:5000 –insecure-registry 192.168.1.4:5000
然后重新加载守护进程并启动docker服务
systemctl daemon-reload systemctl start docker
之后试着拉
docker pull docker.local:5000/eliza/console:0.0.1
命令应该有效
docker for mac 安装 kubernetes、kubernetes dashboard
-
安装参考地址(按照此文档,安装成功):https://yq.aliyun.com/articles/508460
-
官方说明:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
-
常用命令 kubectl 命令:
kubectl get namespaces
kubectl get pods --namespace kube-system
kubectl get deployments --namespace kube-system
kubectl get services --namespace kube-system
kubectl -n kube-system edit service kubernetes-dashboard
kubectl get pods
kubectl get deployments
kubectl get services
kubectl config view
获取令牌,然后登陆 kubernetes dashboard
➜ ~ kubectl get secrets
NAME TYPE DATA AGE
default-token-6ljm8 kubernetes.io/service-account-token 3 6h
➜ ~ kubectl describe secrets default-token-6ljm8
Name: default-token-6ljm8
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name=default
kubernetes.io/service-account.uid=77d014c2-0804-11e9-acd8-025000000001
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 7 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tNmxqbTgiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijc3ZDAxNGMyLTA4MDQtMTFlOS1hY2Q4LTAyNTAwMDAwMDAwMSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.G9TGa4KGj5B-cMv-0-vuangR2_tFiQ1nJMgtsEPs1BEwPAyjmaC-BL5y0Ux9HyC1mlt0DklO-8_o41i4OD_w0wLymxi8zZQxgY7Tlu3_oE5OKnK58xWN-mMTKKnvfDpZrIBbkWQ5EB49LC7QiTBKGAoixGyOBvU1fmD2AzpdO3sWvNsaOWbMLFcwzHA-M2V-CKU3I07Hxs6uIi9juk4IqkTryfvCDUafTrubpkVktwQr7UwzvmKfbPoWLyn1tbCDhR3Il64daoTE9nlmqWwYZZFmfaZjWWWYfi3QPXuNUNpXRVVd_6gcjUzebR1o-22KoOUbobQ94K-1bYJOQSZNnA
将 token 部分复制到登录页的 token 输入框,登陆即可。 出处:http://www.cnblogs.com/along21/p/9811860.html#auto_id_11
Docker Kubernetes 容器依赖
如何解决Docker Kubernetes 容器依赖?
我是 Docker 和 Kubernetes 的新手,我正在尝试解决所有这些问题。
我正在为 Linux 设置一个控制台应用程序作为一个测试概念,我需要能够依赖另一个容器,这将确保另一个容器与控制台应用程序容器一起部署。基本上,我试图添加对 gdal 容器的依赖,以便我可以确保它与我的控制台应用程序一起部署,以便我可以从 bash 提示符运行基本的 gdal 命令。
现在,我已经添加了对 Kubernetes 的协调器支持,它已经创建了我的 azds.yaml 文件以及图表文件夹和配置。从我已经能够拼凑起来的内容来看,我相信我需要将此依赖项添加到控制台应用程序图表的 values.yaml 中?或者它只是在 Chart.yaml 中的依赖项标题下?对在线的预先存在的容器映像执行此操作的语法是什么?
通过 azds.yaml 和 Chart.yaml 中大量内容的默认模板,我只是想对所有这些进行正面或反面。任何有助于更详细地解释这一点的指导或资源将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
docker – Kubectl:Kubernetes与minikube超时
我已经安装了minikube并启动了它内置的Kubernertes集群
$minikube start
Starting local Kubernetes cluster...
Kubernetes is available at https://192.168.99.100:443.
Kubectl is Now configured to use the cluster.
我也安装了kubectl
$kubectl version
Client Version: version.Info{Major:"1",Minor:"3",GitVersion:"v1.3.0",GitCommit:"283137936a498aed572ee22af6774b6fb6e9fd94",GitTreeState:"clean",BuildDate:"2016-07-01T19:26:38Z",GoVersion:"go1.6.2",Compiler:"gc",Platform:"linux/amd64"}
但我无法成功使用kubectl与正在运行的Kubernetes集群交谈
$kubectl get nodes
Unable to connect to the server: net/http: TLS handshake timeout
编辑
$minikube logs
E0712 19:02:08.767815 1257 docker_manager.go:1955] Failed to create pod infra container: ImagePullBackOff; Skipping pod "kube-addon-manager-minikubevm_kube-system(48abed82af93bb0b941173334110923f)": Back-off pulling image "gcr.io/google_containers/pause-amd64:3.0"
E0712 19:02:08.767875 1257 pod_workers.go:183] Error syncing pod 48abed82af93bb0b941173334110923f,skipping: Failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause-amd64:3.0\""
E0712 19:02:23.767380 1257 docker_manager.go:1955] Failed to create pod infra container: ImagePullBackOff; Skipping pod "kube-addon-manager-minikubevm_kube-system(48abed82af93bb0b941173334110923f)": Back-off pulling image "gcr.io/google_containers/pause-amd64:3.0"
E0712 19:02:23.767464 1257 pod_workers.go:183] Error syncing pod 48abed82af93bb0b941173334110923f,skipping: Failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause-amd64:3.0\""
E0712 19:02:36.766696 1257 docker_manager.go:1955] Failed to create pod infra container: ImagePullBackOff; Skipping pod "kube-addon-manager-minikubevm_kube-system(48abed82af93bb0b941173334110923f)": Back-off pulling image "gcr.io/google_containers/pause-amd64:3.0"
E0712 19:02:36.766760 1257 pod_workers.go:183] Error syncing pod 48abed82af93bb0b941173334110923f,skipping: Failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause-amd64:3.0\""
E0712 19:02:51.767621 1257 docker_manager.go:1955] Failed to create pod infra container: ImagePullBackOff; Skipping pod "kube-addon-manager-minikubevm_kube-system(48abed82af93bb0b941173334110923f)": Back-off pulling image "gcr.io/google_containers/pause-amd64:3.0"
E0712 19:02:51.767672 1257 pod_workers.go:183] Error syncing pod 48abed82af93bb0b941173334110923f,skipping: Failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause-amd64:3.0\""
E0712 19:03:02.766548 1257 docker_manager.go:1955] Failed to create pod infra container: ImagePullBackOff; Skipping pod "kube-addon-manager-minikubevm_kube-system(48abed82af93bb0b941173334110923f)": Back-off pulling image "gcr.io/google_containers/pause-amd64:3.0"
E0712 19:03:02.766609 1257 pod_workers.go:183] Error syncing pod 48abed82af93bb0b941173334110923f,skipping: Failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause-amd64:3.0\""
E0712 19:03:16.766831 1257 docker_manager.go:1955] Failed to create pod infra container: ImagePullBackOff; Skipping pod "kube-addon-manager-minikubevm_kube-system(48abed82af93bb0b941173334110923f)": Back-off pulling image "gcr.io/google_containers/pause-amd64:3.0"
E0712 19:03:16.766904 1257 pod_workers.go:183] Error syncing pod 48abed82af93bb0b941173334110923f,skipping: Failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause-amd64:3.0\""
E0712 19:04:15.829223 1257 docker_manager.go:1955] Failed to create pod infra container: ErrImagePull; Skipping pod "kube-addon-manager-minikubevm_kube-system(48abed82af93bb0b941173334110923f)": image pull Failed for gcr.io/google_containers/pause-amd64:3.0,this may be because there are no credentials on this request. details: (Error response from daemon: Get https://gcr.io/v1/_ping: dial tcp 74.125.28.82:443: I/O timeout)
E0712 19:04:15.829326 1257 pod_workers.go:183] Error syncing pod 48abed82af93bb0b941173334110923f,skipping: Failed to "StartContainer" for "POD" with ErrImagePull: "image pull Failed for gcr.io/google_containers/pause-amd64:3.0,this may be because there are no credentials on this request. details: (Error response from daemon: Get https://gcr.io/v1/_ping: dial tcp 74.125.28.82:443: I/O timeout)"
E0712 19:04:31.767536 1257 docker_manager.go:1955] Failed to create pod infra container: ImagePullBackOff; Skipping pod "kube-addon-manager-minikubevm_kube-system(48abed82af93bb0b941173334110923f)": Back-off pulling image "gcr.io/google_containers/pause-amd64:3.0"
一个.您需要确保与VM一起运行的docker守护程序可以通过代理连接到Internet.
湾您需要确保在主机上运行的kubectl可以在不通过代理的情况下到达VM
使用默认的kubectl示例
>确保将代理传递到由minikube创建的VM(这可确保VM中的docker守护程序可以访问Internet)
minikube start –vm-driver =“kvm”–docker-env =“http_proxy = xxx”–docker-env =“https_proxy = yyy”start
注意:使用代理设置替换xxx和yyy
>获取VM在启动时获得的IP.
minikube ip
注意:每次设置minikube都需要这样做,因为它可以改变
>确保kubectl可以在不进入代理的情况下与此VM通信
export no_proxy =“127.0.0.1,[minikube_ip]”
>现在启动POD并测试它
kubectl run hello-minikube –image = gcr.io / google_containers / echoserver:1.4 –port = 8080
kubectl公开部署hello-minikube –type = NodePort
kubectl获取pod
curl $(minikube service hello-minikube –url)
关于【原创】docker & kubernetes 问题总结和kubernetes in docker的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于(Kubernetes Minikube)无法从本地注册表获取docker镜像、docker for mac 安装 kubernetes、kubernetes dashboard、Docker Kubernetes 容器依赖、docker – Kubectl:Kubernetes与minikube超时的相关信息,请在本站寻找。
本文标签: