FAQ宝典之常见问题排查与修复方法

1、服务/容器

一、为何我只能编辑容器的名称?

Docker容器在建立以后就不可更改了。惟一可更改的内容是咱们要存储的不属于Docker容器自己的那一部分数据。不管是中止、启动或是从新启动,它始终在使用相同的容器。如需改变任何内容都须要删除或从新建立一个容器。docker

你能够克隆,即选择已存在的容器,并基于已有容器的配置提早在添加服务界面中填入全部要设置的内容,若是你忘记填入某项内容,能够经过克隆来改变它以后删除旧的容器。shell

二、service-link的容器/服务在Rancher中是如何工做的?

在Docker中,关联容器(在docker run中使用--link)的ID和IP地址会出如今容器的/etc/hosts中。在Rancher中,咱们不须要更改容器的/etc/hosts文件,而是经过运行一个内部DNS服务器来关联容器,DNS服务器会返回给咱们正确的IP。json

三、不能经过Rancher的界面打开命令行或查看日志,如何去访问容器的命令行和日志?

Agent主机有可能会暴露在公网上,Agent上接受到的访问容器命令行或者日志的请求是不可信的。Rancher Server中发出的请求包括一个JWT(JSON Web Token),JWT是由服务器签名而且可由Agent校验的,Agent能够判断出请求是否来自服务器,JWT中包括了有效期限,有效期为5分钟。这个有效期能够防止它被长时间使用。若是JWT被拦截并且没有用SSL时,这一点尤其重要。ubuntu

若是你运行docker logs -f (rancher-agent名称或ID)。日志会显示令牌过时的信息,随后检查Rancher Server主机和Rancher Agent主机的时钟是否同步。服务器

四、在哪里能够看到个人服务日志?

在服务的详细页中,咱们提供了一个服务日志的页签日志。在日志页签中,列出了和服务相关的全部事件,包括时间戳和事件相关描述,这些日志将会保留24小时。网络

五、RANCHER SERVER 点击WEB shell屏幕白屏

若是RANCHER SERVER 运行在V1.6.2版本,点击WEB shell出现白屏,这是UI上的一个BUG,请选择升级server服务。负载均衡

2、跨主机通讯

若是容器运行在不一样主机上,不可以ping通彼此,多是由一些常见的问题引发的。frontend

一、如何检查跨主机通讯是否正常?

在应用->基础设施中,检查 healthcheck 应用的状态。若是是active跨主机通讯就是正常的。tcp

手动测试,你能够进入任何一个容器中,去ping另外一个容器的内部IP。在主机页面中可能会隐藏掉基础设施的容器,如需查看点击“显示系统容器”的复选框。测试

二、UI中显示的主机IP是否正确?

有时,Docker网桥的IP地址会被错误的做为了主机IP,而并无正确的选择真实的主机IP。这个错误的IP一般是172.17.42.1或以172.17.x.x开头的IP。若是是这种状况,在使用docker run命令添加主机时,请用真实主机的IP地址来配置CATTLE_AGENT_IP环境变量。

sudo docker run -d -e CATTLE_AGENT_IP=<HOST_IP> --privileged \
-v /var/run/docker.sock:/var/run/docker.sock \
rancher/agent:v0.8.2 http://SERVER_IP:8080/v1/scripts/xxxx

三、Rancher的默认子网(10.42.0.0/16)在个人网络环境中已经被使用或禁止使用,我应该怎么去更改这个子网?

Rancher Overlay网络默认使用的子网是10.42.0.0/16。若是这个子网已经被使用,你将须要更改Rancher网络中使用的默认子网。你要确保基础设施服务里的Network组件中使用着合适的子网。这个子网定义在该服务的rancher-compose.yml文件中的default_network里。

要更改Rancher的IPsec或VXLAN网络驱动,你将须要在环境模版中修改网络基础设施服务的配置。建立新环境模板或编辑现有环境模板时,能够经过单击编辑来配置网络基础结构服务的配置。在编辑页面中,选择配置选项>子网输入不一样子网,点击配置。在任何新环境中将使用环境模板更新后的子网,编辑已经有的环境模板不会更改如今已有环境的子网。

这个实例是经过升级网络驱动的rancher-compose.yml文件去改变子网为10.32.0.0/16。

ipsec:
  network_driver:
    name: Rancher IPsec
    default_network:
      name: ipsec
      host_ports: true
      subnets:
      # After the configuration option is updated, the default subnet address is updated
      - network_address: 10.32.0.0/16
      dns:
      - 169.254.169.250
      dns_search:
      - rancher.internal
    cni_config:
      '10-rancher.conf':
        name: rancher-cni-network
        type: rancher-bridge
        bridge: docker0
        # After the configuration option is updated, the default subnet address is updated
        bridgeSubnet: 10.32.0.0/16
        logToFile: /var/log/rancher-cni.log
        isDebugLevel: false
        isDefaultGateway: true
        hostNat: true
        hairpinMode: true
        mtu: 1500
        linkMTUOverhead: 98
        ipam:
          type: rancher-cni-ipam
          logToFile: /var/log/rancher-cni.log
          isDebugLevel: false
          routes:
          - dst: 169.254.169.250/32
注意:随着Rancher经过升级基础服务来更新子网,之前经过API更新子网的方法将再也不适用。

四、VXLAN 网络模式下,跨主机容器没法通讯

Vxlan 经过4789端口实现通讯,检查防火墙有没有开放此端口;

执行iptables -t filter -L -n参看IPtable表,查看chain FORWARD 是否是被丢弃,若是是,执行sudo iptables -P FORWARD ACCEPT

3、DNS

一、如何查看个人DNS是否配置正确?

若是你想查看Rancher DNS配置,点击应用 > 基础服务。点击network-services应用,选择metadata,在metadata中,找到名为network-services-metadata-dns-X的容器,经过UI点击执行命令行后,能够进入该容器的命令行,而后执行以下命令。

cat /etc/rancher-dns/answers.json

二、在Ubuntu上运行容器时彼此间不能正常通讯。

若是你的系统开启了UFW,请关闭UFW或更改/etc/default/ufw中的策略为:

DEFAULT_FORWARD_POLICY="ACCEPT"

4、负载均衡

一、为何个人负载均衡一直是Initializing状态?

负载均衡器自动对其启用健康检查。若是负载均衡器处于初始化状态,则极可能主机之间没法进行跨主机通讯。

二、我如何查看负载均衡的配置?

若是要查看负载均衡器的配置,你须要用进入负载均衡器容器内部查找配置文件,你能够在页面选择负载均衡容器的执行命令行

cat /etc/haproxy/haproxy.cfg

该文件将提供负载均衡器的全部配置详细信息。

三、我在哪能找到HAproxy的日志?

HAProxy的日志能够在负载均衡器容器内找到。负载均衡器容器的docker logs只提供与负载均衡器相关的服务的详细信息,但不提供实际的HAProxy日志记录。

cat /var/log/haproxy

四、如何自定义负载均衡的配置

图片描述

如图,在自定义配置中,按照global、defaults、frontend、backend的格式配置。

5、健康检查

一、为何健康检查服务一直显示黄色初始化状态?

healthcheck不只为其余服务提供健康检查,对系统组件(好比调度服务)也提供健康检查服务,healthcheck也对本身进行健康检查。多个healthcheck组件时,它们会相互交叉检查,只有健康检查经过后,容器状态才会变成绿色。而healthcheck一直显示黄色初始化状态,说明一直没有经过健康检查。健康检查都是经过网络访问的,因此必定是网络通讯异常致使。

6、调度

为何节点关机后,应用没有自动调度到其余节点上?Rancher上应用的调度,须要配合健康检查功能。当健康检查检查到应用不健康才会从新调度,若是没有配置健康检查,即便关机,cattle也不会对应用作调度处理。

7、CentOS

一、为何容器没法链接到网络?

若是你在主机上运行一个容器(如:docker run -it ubuntu)该容器不能与互联网或其余主机通讯,那多是遇到了网络问题。Centos默认设置/proc/sys/net/ipv4/ip_forward为0,这从底层阻断了Docker全部网络。

解决办法:

vi /usr/lib/sysctl.d/00-system.conf

添加以下代码:

net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1

重启network服务

systemctl restart network

查看是否修改为功

sysctl net.ipv4.ip_forward

若是返回为net.ipv4.ip_forward = 1则表示成功了

8、京东云

一、京东云运行rancher server出现如下问题

图片描述

解决办法:sudo sysctl -w net.ipv4.tcp_mtu_probing=1

推荐阅读:《FAQ宝典之Rancher Server》《FAQ宝典之Rancher Server、K8s、Docker》

相关文章
相关标签/搜索