当前位置: 首页 > 知识库问答 >
问题:

如何访问来自另一台机器的服务?

柳深
2023-03-14

编辑:
我使用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

并尝试在此网络中运行容器

docker0:flags=4099 mtu 1500 inet 172.17.0.1 netmask 255.255.255广播172.17.255.255以太网02:42:79:4F:FC:66 TX队列n 0(以太网)RX数据包0字节0(0.0B)RX错误0丢弃0溢出0帧0 TX数据包0字节0(0.0B)TX错误0丢弃0溢出0载波0冲突0

ENP1S0:flags=4163 mtu 1500 inet 172.16.108.1 netmask 255.255.255.192广播172.16.108.63 inet6 FE80::593F:24D0:31F2:4FD8前缀LEN 64作用域ID 0x20以太D0:94:66:A5:29:8F TX队列LEN 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前缀LEN 128 scopeid 0x10循环txqueuelen 1000(环回本地)RX数据包0字节0(0.0B)RX错误0丢弃0溢出0帧0 TX数据包0字节0(0.0B)TX错误0丢弃0溢出0载波0冲突0

Edit3:
我尝试指定在启动rancher和/或主机时传递标志--address的ip地址,结果相同:未知标志:--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
要启动rancher机器(作为未来的主机)
我尝试了上面相同的命令,但没有使用--address。然后,连接到容器的shell中,我尝试创建主机

docker run-e cattle_agent_ip=“172.17.0.3”--rm--特权--地址172.16.108.63-v/var/run/docker.sock:/var/run/docker-v/var/lib/rancher:/var/lib/rancher ran cher/agent:v1.2.11 http://172.17.0.2:8080/v1/scripts/3fa0e7b767770264bcad:1546214400000:p9nfsauqyhzpoibggyczihkkte

结果是一样的。

简历:我试图在我的本地网络中创建一个rancher-server来从同一网络中的其他机器访问我的负载均衡器中的应用程序。

共有1个答案

吴均
2023-03-14

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

编辑1:

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

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

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

====

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"

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

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

步骤3:创建入口

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:// /app1 上可用

 类似资料:
  • 问题内容: 我需要将Jenkins 2.32版从服务器A移至Jenkins 2.72.1服务器B。两台服务器均具有ubuntu 16.04.3,由于内存问题,我无法安装任何插件,也无法在服务器A中使用该插件。有什么办法可以实现这一目标? 问题答案: 将目录中的所有文件复制到新服务器。 将新服务器指向新目录。 将Jenkins war文件(或servlet容器设置,如果有的话)复制到新机器上并启动它

  • 问题内容: 我在本地计算机上为postgres创建了一个docker卷。 然后,我使用了该卷并运行了一个docker。 之后,我做了一些数据库操作,这些操作自动存储在postgres-data中。现在,我想将该卷从本地计算机复制到另一台远程计算机。怎么做一样。 注意-数据库大小非常大 问题答案: 如果第二台计算机启用了SSH,则可以在第一台计算机上使用Alpine容器来映射该卷,将其捆绑并发送到第

  • 问题内容: 我目前有一个在云实例上运行的实时Redis服务器,我想将此Redis服务器迁移到新的云实例并将该实例用作我的新Redis服务器。如果是MySQL,我将从旧服务器中导出数据库并将其导入新服务器中。我应该如何使用redis? PS:我不想设置复制。我想将Redis服务器完全迁移到新实例。 问题答案: 通过运行或从命令行将数据库快照保存到dump.rdb中。这将在与Redis服务器相同的文件

  • 我有姜戈问题。我想将来自浏览器或django服务器上的业务逻辑的数据发送到另一个django服务器或只是同一服务器但不同端口来处理请求。我该怎么办?我试着用套接字来实现,但似乎不起作用。

  • 环境详细信息 Windows 10 Docker桌面 Spring Boot(在容器内使用) RabbitMQ(作为服务安装在我的windows机器上) 我想从Spring Boot Container访问RabbitMQ服务。我在里面提供了下面的属性application.properties 我正在运行我的Spring启动应用程序 docker run-p 8083:8083 dockerde

  • 问题内容: 我正在boot2docker 1.3.1下运行。 我有一个Docker容器通过运行Web服务器。 如果我连接到该容器,则可以使用浏览该网站,以便知道服务器正在运行。 我用以下容器运行容器: 它具有以下详细信息: 我以为可以访问,从托管人访问该网站。 这是行不通的。我只是在Chrome中看到“正在连接…”,却一无所获。 我究竟做错了什么? 问题答案: 好吧,愚蠢的我,我在boot2doc