mesos 容器映射端口限制

2018-07-11  本文已影响0人  北极企鹅ys

介绍

mesos 在启动容器的时候,理念是容器内的端都映射到宿主的随机端口。
在容器的时代,其实这样的理念是很好,当容器多的时候,固定端口肯定是有一定的局限性的。可以通过注册中心、mesos-dns、marathon-lb等服务来找到你要的服务地址和端口。
但是有时候有一些服务需要一些固定端口。比如cadvisor、还有我们自己写的容器,可能会映射一些其他端口。

默认端口限制

默认mesos的端口也是可以指定的,只是范围比较小。

31000 - 32000

marahotn 的json 文件中,你可以写。

  "portMappings": [
    {
      "containerPort": 80,
      "hostPort": 31000,  # 一般设置 0 为随机端口,
      "servicePort": 0,
      "protocol": "tcp"
    }
  ]

docker 启动时候就是

[root@test00 ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                            NAMES
70314cd31714        nginx-nettools:1.13   "nginx -g 'daemon ..."   24 minutes ago      Up 24 minutes       443/tcp, 0.0.0.0:31000->80/tcp   mesos-07a768f1-f635-4517-9b60-4e86bfef658e

配置mesos

yum 安装的meoss 添加配置

echo "ports(*):[1024-65534]" > /etc/mesos-slave/resources 

重启 mesos-slave 服务

systemctl restart mesos-slave

二进制安装的mesos 在启动命令中添加

--resources=ports(*):[1024-65534]

这样你的端口就是在 1024 - 65524 中间随意指定了。

测试

marathon json文件

 "portMappings": [
   {
     "containerPort": 80,
     "hostPort": 8080,
     "servicePort": 0,
     "protocol": "tcp"
   }
 ]

docker 启动时候是

[root@test00 ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                           NAMES
1235513ee658        nginx-nettools:1.13   "nginx -g 'daemon ..."   6 minutes ago       Up 6 minutes        443/tcp, 0.0.0.0:8080->80/tcp   mesos-655d4923-0d1f-4130-8d61-aab824df3f25-S13.9e0c2cfb-3d07-467f-ac47-08e492703263

Q&A

如果mesos上运行过容器,在你修改配置文件之后重启会有问题。

你可以通过
journalctl -xe
或
查看mesos的log日志 找到问题

解决方法: 日志中会有提示

To remedy this do as follows:
Step 1: rm -f /home/mtime/mesos/meta/slaves/latest
        This ensures agent doesn't recover old live executors.
  ep 2: Restart the agent.

rm -f /home/mtime/mesos/meta/slaves/latest
删除之后在重启即可。

我的 github 博客https://sukbeta.github.io/mesos-container-port-limit/

上一篇 下一篇

猜你喜欢

热点阅读