Kubernetes码头样本不暴露端口 [英] Kubernetes docker sample does not expose a port

查看:223
本文介绍了Kubernetes码头样本不暴露端口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我正在探索kubernetes的时候,我开始使用基于Docker的入门指南。该指南可以在这里找到: https: //github.com/GoogleCloudPlatform/kubernetes/blob/release-1.0/docs/getting-started-guides/docker.md



打破指南,它建议运行以下命令:

  docker run --net = host -d gcr.io/google_containers/etcd: 2.0.9 / usr / local / bin / etcd --addr = 127.0.0.1:4001 --bind-addr = 0.0.0.0:4001 --data-dir = / var / etcd / data 
docker run - -net = host -d -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v0.21.2 / hyperkube kubelet --api_servers = http:// localhost:8080 --v = 2 --address = 0.0.0.0 --enable_server --hostname_override = 127.0.0.1 --config = / etc / kubernetes / manifestests
docker run -d --net = host --privileged gcr。 io / google_containers / hyperkube:v0.21.2 / hyperkube proxy --master = http://127.0.0.1:8080 --v = 2

./kubectl -s http:// localhost:8080 [R un-container nginx --image = nginx --port = 80
./kubectl暴露rc nginx --port = 80

这些命令在我的机器上生成以下输出:

  5a0993be2df88f9da448234490ce98f744a47d0ff3ec2e9b9ba76ff8c85eb600 
0c9ab039e8024d5596b87eb294ad31538ba8864509d9886c4217e6fe47416f1a
d413be16d3f0167bbaacba7582d22a1752b2195fe8d7f7333bbcb5ce2d2a7b20

控制器容器(S)图像选择器REPLICAS
nginx nginx nginx run = nginx 1

名称标签选择器IP(S)端口( S)
nginx run = nginx run = nginx 80 / TCP

我现在想知道为什么IP(S)列不显示IP地址。
看看我的 docker ps 输出:

  CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
4c5d8c790daa nginxnginx -g守护进程4分钟前Up 4分钟k8s_nginx.d7d3eb2f_nginx-em03c_default_c7d89937-3df9-11e5-b322-20689deb710c_b7323a43
cedfe5cf7841 gcr.io/google_containers/pause :0.8.0/ pause4分钟前Up 4分钟k8s_POD.ef28e851_nginx-em03c_default_c7d89937-3df9-11e5-b322-20689deb710c_cf507bf9
a92be0abae29 gcr.io/google_containers/hyperkube:v0.21.2/ hyperkube schedule 5分钟前上5分钟k8s_scheduler.b725e775_k8s-master-127.0.0.1_default_9b44830745c166dfc6d027b0fc2df36d_85e00e91
7910edc79350 gcr.io/google_containers/hyperkube:v0.21.2/ hyperkube apiserve 5分钟前Up 5分钟k8s_apiserver.70750283_k8s-master-127.0.0.1_default_9b44830745c166dfc6d027b0fc2df36d_03ed1050
23d1d3f9eac0 gcr.io/google_containers/hyperkube:v0 .21.2/ hyperkube控制5分钟前5分钟k8s_controller-manager.aad1ee8f_k8s-master-127.0.0.1_default_9b44830745c166dfc6d027b0fc2df36d_17695204
caccad2f2e68 gcr.io/google_containers/pause:0.8.0/ pause5分钟前上5分钟k8s_POD.e4cc795_k8s-master-127.0.0.1_default_9b44830745c166dfc6d027b0fc2df36d_fb79862d
d413be16d3f0 gcr.io/google_containers/hyperkube:v0.21.2/ hyperkube proxy - 5分钟前Up 5分钟nostalgic_colden
0c9ab039e802 gcr.io/google_containers/hyperkube:v0.21.2/ hyperkube kubelet 5分钟前Up 5 minutes suspicious_ritchie
5a0993be2df8 gcr.io/google_containers/etcd:2.0.9/ usr / local / bin / etcd 5分钟前Up 5分钟loving_einstein2

我想知道为什么nginx容器没有端口映射。



kubernetes服务如何将流量路由到不暴露任何端口的docker容器?自文档中有什么变化是写的还是有什么我失踪了?



使用的版本:



./ kubectl版本

 客户端版本:version.Info {Major: 0,次要:18,GitVersion:v0.18.2,GitCommit:1f12b893876ad6c41396222693e37061f6e80fe1,GitTreeState:clean} 
服务器版本:version.Info {Major:0,Minor:21 ,GitVersion:v0.21.2,GitCommit:4e89f2e6670b1662021a86ac42b99c5c50c37d05,GitTreeState:clean}

docker版本

 客户端版本:1.7.0 
客户端API版本:1.19
Go版本(客户端):go1.4.2
Git提交(客户端):0baf609
操作系统/ Arch(客户端):linux / amd64
服务器版本: 1.7.0
服务器API版本:1.19
转到版本(服务器):go1.4.2
Git提交(服务器):0baf609
OS / Arch(服务器):linux / amd64


解决方案

kubectl暴露命令创建一个服务,ho



您可以使用 ./ kubectl public rc nginx -l run = nginx --port = 80 使用 run = nginx 作为选择器创建一个服务。



然后运行 kubectl描述服务nginx 显示:

  W0809 14:05:26.337988 3423请求.go:291]字段选择器:v1beta3  - 事件 -  involvedObject.kind  - 服务:需要检查是否正确版本。 
W0809 14:05:26.340098 3423 request.go:291]字段选择器:v1beta3 - 事件 - involvedObject.uid - deb1c06e-3e8e-11e5 -aa11-20689deb710c:需要检查是否正确版本化。
W0809 14:05:26.340197 3423 request.go:291]字段选择器:v1beta3 - 事件 - involvingObject.name - nginx:需要检查是否正确版本化。
W0809 14:05:26.340243 3423 request.go:291]字段选择器:v1beta3 - 事件 - involvingObject.namespace - 默认值:需要检查是否正确版本化。
名称:nginx
标签:run = nginx
选择器:run = nginx
类型:ClusterIP
IP:10.0.0.201
端口:默认80 / TCP
端点:172.17.0.29:80
会话亲和度:无
无事件。

当您现在导航到 172.17.0.29:80 你可以看到你的nginx运行。


As I am exploring kubernetes I started with the docker based getting-started guide as suggested by the docs. The guide can be found here: https://github.com/GoogleCloudPlatform/kubernetes/blob/release-1.0/docs/getting-started-guides/docker.md

Breaking down the guid, it suggests to run the following commands:

docker run --net=host -d gcr.io/google_containers/etcd:2.0.9 /usr/local/bin/etcd --addr=127.0.0.1:4001 --bind-addr=0.0.0.0:4001 --data-dir=/var/etcd/data
docker run --net=host -d -v /var/run/docker.sock:/var/run/docker.sock  gcr.io/google_containers/hyperkube:v0.21.2 /hyperkube kubelet --api_servers=http://localhost:8080 --v=2 --address=0.0.0.0 --enable_server --hostname_override=127.0.0.1 --config=/etc/kubernetes/manifests
docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v0.21.2 /hyperkube proxy --master=http://127.0.0.1:8080 --v=2

./kubectl -s http://localhost:8080 run-container nginx --image=nginx --port=80
./kubectl expose rc nginx --port=80

Those commands generate the following output on my machine:

5a0993be2df88f9da448234490ce98f744a47d0ff3ec2e9b9ba76ff8c85eb600
0c9ab039e8024d5596b87eb294ad31538ba8864509d9886c4217e6fe47416f1a
d413be16d3f0167bbaacba7582d22a1752b2195fe8d7f7333bbcb5ce2d2a7b20

CONTROLLER   CONTAINER(S)   IMAGE(S)   SELECTOR    REPLICAS
nginx        nginx          nginx      run=nginx   1

NAME      LABELS      SELECTOR    IP(S)     PORT(S)
nginx     run=nginx   run=nginx             80/TCP

I am now wondering why the "IP(S)" column does not show an ip-address. Looking at my docker ps output:

CONTAINER ID        IMAGE                                        COMMAND                CREATED             STATUS              PORTS               NAMES
4c5d8c790daa        nginx                                        "nginx -g 'daemon of   4 minutes ago       Up 4 minutes                            k8s_nginx.d7d3eb2f_nginx-em03c_default_c7d89937-3df9-11e5-b322-20689deb710c_b7323a43                     
cedfe5cf7841        gcr.io/google_containers/pause:0.8.0         "/pause"               4 minutes ago       Up 4 minutes                            k8s_POD.ef28e851_nginx-em03c_default_c7d89937-3df9-11e5-b322-20689deb710c_cf507bf9                       
a92be0abae29        gcr.io/google_containers/hyperkube:v0.21.2   "/hyperkube schedule   5 minutes ago       Up 5 minutes                            k8s_scheduler.b725e775_k8s-master-127.0.0.1_default_9b44830745c166dfc6d027b0fc2df36d_85e00e91            
7910edc79350        gcr.io/google_containers/hyperkube:v0.21.2   "/hyperkube apiserve   5 minutes ago       Up 5 minutes                            k8s_apiserver.70750283_k8s-master-127.0.0.1_default_9b44830745c166dfc6d027b0fc2df36d_03ed1050            
23d1d3f9eac0        gcr.io/google_containers/hyperkube:v0.21.2   "/hyperkube controll   5 minutes ago       Up 5 minutes                            k8s_controller-manager.aad1ee8f_k8s-master-127.0.0.1_default_9b44830745c166dfc6d027b0fc2df36d_17695204   
caccad2f2e68        gcr.io/google_containers/pause:0.8.0         "/pause"               5 minutes ago       Up 5 minutes                            k8s_POD.e4cc795_k8s-master-127.0.0.1_default_9b44830745c166dfc6d027b0fc2df36d_fb79862d                   
d413be16d3f0        gcr.io/google_containers/hyperkube:v0.21.2   "/hyperkube proxy --   5 minutes ago       Up 5 minutes                            nostalgic_colden                                                                                         
0c9ab039e802        gcr.io/google_containers/hyperkube:v0.21.2   "/hyperkube kubelet    5 minutes ago       Up 5 minutes                            suspicious_ritchie                                                                                       
5a0993be2df8        gcr.io/google_containers/etcd:2.0.9          "/usr/local/bin/etcd   5 minutes ago       Up 5 minutes                            loving_einstein2    

i am wondering why the nginx-container has no port mappings.

How can an kubernetes service route traffic into a docker container that does not expose any ports? Is there anything what has changed since the documentation was written? Or is there anything I am missing?

Versions used:

./kubectl version:

Client Version: version.Info{Major:"0", Minor:"18", GitVersion:"v0.18.2", GitCommit:"1f12b893876ad6c41396222693e37061f6e80fe1", GitTreeState:"clean"}
Server Version: version.Info{Major:"0", Minor:"21", GitVersion:"v0.21.2", GitCommit:"4e89f2e6670b1662021a86ac42b99c5c50c37d05", GitTreeState:"clean"}

docker version

Client version: 1.7.0
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 0baf609
OS/Arch (client): linux/amd64
Server version: 1.7.0
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 0baf609
OS/Arch (server): linux/amd64

解决方案

The kubectl expose command creates a service, however its selector does not match the created pods.

You can use ./kubectl expose rc nginx -l run=nginx --port=80 to create a service using run=nginx as the selector.

Then running kubectl describe service nginx shows:

W0809 14:05:26.337988    3423 request.go:291] field selector: v1beta3 - events - involvedObject.kind - Service: need to check if this is versioned correctly.
W0809 14:05:26.340098    3423 request.go:291] field selector: v1beta3 - events - involvedObject.uid - deb1c06e-3e8e-11e5-aa11-20689deb710c: need to check if this is versioned correctly.
W0809 14:05:26.340197    3423 request.go:291] field selector: v1beta3 - events - involvedObject.name - nginx: need to check if this is versioned correctly.
W0809 14:05:26.340243    3423 request.go:291] field selector: v1beta3 - events - involvedObject.namespace - default: need to check if this is versioned correctly.
Name:           nginx
Labels:         run=nginx
Selector:       run=nginx
Type:           ClusterIP
IP:         10.0.0.201
Port:           default 80/TCP
Endpoints:      172.17.0.29:80
Session Affinity:   None
No events.

When you now navigate to the endpoint at 172.17.0.29:80 you can see your nginx running.

这篇关于Kubernetes码头样本不暴露端口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆