如何使用rancher-server从另一台机器访问服务?

问题描述 投票:0回答:1

我正在尝试在本地网络上使用牧场主创建一个docker服务器(有许多机器,一些linux,一些windows)。我安装了rancher-server,创建了一个主机,添加了一个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端口

我试着在牧场主UI中改变容器的网络,没有用,我读了一些关于创建一个docker网络的东西,但是我有点困惑,cuz docker创建了一个defaut netdocker,docker0,是一个桥接网络..我在网络问题上有一点兴趣。

编辑: 我使用docker网络创建了macvlan,现在我可以使用其他机器ping我的容器,但现在,我的容器没有互联网连接下载东西。

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 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether 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冲突0

enp1s0:flags = 4163 mtu 1500 inet 172.16.108.1 netmask 255.255.255.192 broadcast 172.16.108.63 inet6 fe80 :: 593f:24d0:31f2:4fd8 prefixlen 64 scopeid 0x20 ether d0:94:66:a5:29:8f txqueuelen 1000(以太网)RX数据包1251字节1024069(1000.0 KiB)RX错误0丢失5超支0帧0 TX数据包980字节157904(154.2 KiB)TX错误0丢弃0溢出0载波0冲突0

lo:flags = 73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 :: 1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000(Loopback Local)RX包0字节0(0.0 B)RX错误0丢弃0溢出0帧0 TX包0字节0(0.0 B)TX错误0丢弃0溢出0载波0冲突0

EDIT3: 我尝试在启动rancher和/或主机时指定ip地址传递标志--address,结果是相同的:unknown flag: --address我尝试做的命令是:

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

启动rancher服务器。我也试过macvlan

docker run --privileged --name some-docker1 --address 172.16.108.63 -d docker:stable-dind 启动牧场主机(成为未来主机) 我尝试了上面的相同命令,但没有--address。然后,附加在容器的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

结果是一样的..

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

docker networking rancher
1个回答
1
投票

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

编辑1:

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

在您的情况下,您需要在注册主机时指定--address 172.16.108.63

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

====

以下是一种能够从群集外部访问应用程序的方法。这涉及使用Ingress。 (点击这里获取更多信息:https://kubernetes.io/docs/concepts/services-networking/ingress/

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

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"

第2步:创建服务(可以直接创建入口,但我喜欢隔离事物)

apiVersion: v1
kind: Service
metadata:
  labels:
    name: access-app1
  name: access-app1
spec:
  ports:
    - port: 80
      targetPort: 80
  selector:
    name: app1

第3步:创建Ingress

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上发布

© www.soinside.com 2019 - 2024. All rights reserved.