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》

相關文章
相關標籤/搜索