首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从另一台机器获得一项服务,取消农场主服务器?

如何从另一台机器获得一项服务,取消农场主服务器?
EN

Stack Overflow用户
提问于 2019-04-09 18:08:35
回答 1查看 1.2K关注 0票数 0

我正在尝试使用本地网络上的牧场主创建一个码头服务器(有许多机器,一些linux,一些窗口)。我安装了牧场主服务器,创建了一个主机,添加了一个API来测试,并创建了一个负载均衡器来注册这个API。在本地,工作正常,我可以访问API容器,比如:"http://test.172.17.0.4.xip.io:3000/",但是在我网络中的其他机器中,我不能访问..。

PS:

test -> API名称

172.17.0.4 -> Ip的主机码头(与牧场主代理)

xip.io ->公共通配符DNS (更多参见:http://xip.io/ )

负载均衡器中映射的3000 -> API端口

我试着改变农场用户界面中集装箱的网络,没有工作,我读了一些关于创建码头网络的东西,但是我有点困惑,因为码头管理员创建一个缺陷网络,docker0,是一个桥梁网络。我有点沉溺于网络事务。

编辑:

我使用docker网络创建了macvlan,现在我可以使用其他机器切换到我的容器,但是现在,我的容器没有互联网连接来下载东西。

docker network create -d macvlan --subnet=172.16.108.0/26 --gateway=172.16.108.1 -o macvlan_mode=bridge -o parent=enp1s0 rancher

并试图在这个网络中运行一个容器

EDIT2:

这个ifconfig输出

docker0: flags=4099 mtu 1500 inter172.17.0.1网络掩码255.255.0.0广播172.17.255.255以太网02:42:79:4f:fc:66 txqueuelen 0(以太网) RX数据包0字节0 (0.0 B) RX错误0删除0超出0帧0 TX数据包0字节0 (0.0 B) TX错误0下降0溢出0载波0碰撞

enp1s0: flags=4163 mtu 1500 inter172.16.108.1网络掩码255.255.255.192广播172.16.108.63 inet6 fe80:593 f:24d0:31f2:4fd8前缀64 flags=4163 0x20醚d0:94:66:a5:29:8f txqueuelen 1000 (以太网) RX数据包1251字节(1000.0 KiB) RX错误0删除5超过0帧0 TX数据包980字节157904 (154.2 KiB)

lo: flags=73 mtu 65536 inet 127.0.0.1 net掩码255.0.0.0 inet6 ::1前缀128个循环txqueuelen 1000 (回环本地) RX数据包0字节0 (0.0 B) RX错误0删除0超出0帧0 TX包0字节0 (0.0 B) TX错误0丢弃0超过0载波0碰撞0

EDIT3:

我试图指定传递标志的ip入口--在启动牧场主和/或主机时的地址,结果是相同的:unknown flag: --address我尝试执行的命令是:

docker run -d --restart=unless-stopped --address 172.16.108.63 -p 8080:8080 rancher/server

启动牧场主服务器。我也试过了

docker run --privileged --name some-docker1 --address 172.16.108.63 -d docker:stable-dind

启动农场主机器(成为未来的宿主)

我试过上面同样的命令,但没有地址。然后,在容器的shell中,我尝试创建主机。

docker run -e CATTLE_AGENT_IP="172.17.0.3" --rm --privileged --address 172.16.108.63 -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher ran cher/agent:v1.2.11 http://172.17.0.2:8080/v1/scripts/3FA0E7B767770264BCAD:1546214400000:P9NfsauqyhZpoeIBgGyCZIHkKtE

结果是一样的。

简历:我试图在本地网络中创建一个牧场主服务器,以便从同一网络中的其他机器访问负载均衡器中的应用程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 21:27:55

编辑2:需要指定使用CATTLE_AGENT_IP添加的主机的IP地址。我在之前的编辑中错了版本。

编辑1:

当使用同一主机同时运行牧场服务器和代理映像时,使用标志--address <IP address>指定主机的IP地址非常重要。否则,自动检测到的IP地址将不正确。

在您的示例中,您需要在注册主机时指定--address 172.16.108.63

然后生成的xip地址将反映正确的IP地址。

====

以下是从集群外部访问应用程序的一种方法。这涉及到使用侵入。(有关更多信息,请查看此处:https://kubernetes.io/docs/concepts/services-networking/ingress/)

步骤1:创建部署(根据需要更改映像并自定义其他选项)

代码语言:javascript
运行
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app1
spec:
  replicas: 1
  selector:
    matchLabels:
      name: app1
  template:
    metadata:
      labels:
        name: app1
    spec:
      containers:
      - name: app1
        image: leodotcloud/swiss-army-knife
        ports:
        - containerPort: 80
          name: http
        env:
        - name: NATO_ALPHABET
          value: "a"

第二步:创建一个服务(可以直接创建入口,但我喜欢保持隔离)

代码语言:javascript
运行
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    name: access-app1
  name: access-app1
spec:
  ports:
    - port: 80
      targetPort: 80
  selector:
    name: app1

第3步:创建入侵

代码语言:javascript
运行
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-app1
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /app1
        backend:
          serviceName: access-app1
          servicePort: 80

现在,您的应用程序将在http://<HOST_IP_ADDRESS>/app1上可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55598791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档