Docker容器在建立以後就不可更改了。惟一可更改的內容是咱們要存儲的不屬於Docker容器自己的那一部分數據。不管是中止、啓動或是從新啓動,它始終在使用相同的容器。如需改變任何內容都須要刪除或從新建立一個容器。docker
你能夠克隆,即選擇已存在的容器,並基於已有容器的配置提早在添加服務界面中填入全部要設置的內容,若是你忘記填入某項內容,能夠經過克隆來改變它以後刪除舊的容器。shell
在Docker中,關聯容器(在docker run中使用--link)的ID和IP地址會出如今容器的/etc/hosts中。在Rancher中,咱們不須要更改容器的/etc/hosts文件,而是經過運行一個內部DNS服務器來關聯容器,DNS服務器會返回給咱們正確的IP。json
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 運行在V1.6.2版本,點擊WEB shell出現白屏,這是UI上的一個BUG,請選擇升級server服務。負載均衡
若是容器運行在不一樣主機上,不可以ping通彼此,多是由一些常見的問題引發的。frontend
在應用->基礎設施中,檢查 healthcheck 應用的狀態。若是是active跨主機通訊就是正常的。tcp
手動測試,你能夠進入任何一個容器中,去ping另外一個容器的內部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 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 經過4789端口實現通訊,檢查防火牆有沒有開放此端口;
執行iptables -t filter -L -n參看IPtable表,查看chain FORWARD 是否是被丟棄,若是是,執行sudo iptables -P FORWARD ACCEPT
若是你想查看Rancher DNS配置,點擊應用 > 基礎服務。點擊network-services應用,選擇metadata,在metadata中,找到名爲network-services-metadata-dns-X的容器,經過UI點擊執行命令行後,能夠進入該容器的命令行,而後執行以下命令。
cat /etc/rancher-dns/answers.json
若是你的系統開啓了UFW,請關閉UFW或更改/etc/default/ufw中的策略爲:
DEFAULT_FORWARD_POLICY="ACCEPT"
負載均衡器自動對其啓用健康檢查。若是負載均衡器處於初始化狀態,則極可能主機之間沒法進行跨主機通訊。
若是要查看負載均衡器的配置,你須要用進入負載均衡器容器內部查找配置文件,你能夠在頁面選擇負載均衡容器的執行命令行
cat /etc/haproxy/haproxy.cfg
該文件將提供負載均衡器的全部配置詳細信息。
HAProxy的日誌能夠在負載均衡器容器內找到。負載均衡器容器的docker logs只提供與負載均衡器相關的服務的詳細信息,但不提供實際的HAProxy日誌記錄。
cat /var/log/haproxy
如圖,在自定義配置中,按照global、defaults、frontend、backend的格式配置。
healthcheck不只爲其餘服務提供健康檢查,對系統組件(好比調度服務)也提供健康檢查服務,healthcheck也對本身進行健康檢查。多個healthcheck組件時,它們會相互交叉檢查,只有健康檢查經過後,容器狀態纔會變成綠色。而healthcheck一直顯示黃色初始化狀態,說明一直沒有經過健康檢查。健康檢查都是經過網絡訪問的,因此必定是網絡通訊異常致使。
爲何節點關機後,應用沒有自動調度到其餘節點上?Rancher上應用的調度,須要配合健康檢查功能。當健康檢查檢查到應用不健康纔會從新調度,若是沒有配置健康檢查,即便關機,cattle也不會對應用作調度處理。
若是你在主機上運行一個容器(如: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則表示成功了
解決辦法:sudo sysctl -w net.ipv4.tcp_mtu_probing=1
推薦閱讀:《FAQ寶典之Rancher Server》,《FAQ寶典之Rancher Server、K8s、Docker》