基於Linux(RHELV7Update4)下的IBM私有云ICP-CE(IBM Cloud Private)環境安裝部署測試

本博文主要目的是記錄在ICP的安裝、啓動、基本功能、卸載等相關測試過程。主要涉及的知識點有:docker的安裝以及使用、kubelet相關功能的使用、Helm管理等容器相關技術。

ICP簡介

ICP爲IBM的私有云方案,基於docker以及kubernetes技術搭建。可以部署在VMWare及OpenStack等IaaS架構上,並且支持x86、POWERLinux以及zLinux架構。上層則可以通過Helm Charts部署各種IBM、第三方以及社區的鏡像及模板應用。主要相關介紹可以參見IBM官網的相關介紹3

軟硬件環境

表1 軟件環境

軟件類別

軟件名稱

版本

操作系統

RHEL

V7Update4(x86_64)

ICP

ICP-CE(社區版本)

2.1.0.1

Docker

docker-ce

17.12.0-ce

瀏覽器

Google Chrome for win

64.0.3282.18664 位)

管理軟件主要包括上述的操作系統,此處使用RHEL的操作系統7.4版本,ICP版本爲IBM目前最新的版本,選擇社區版本進行測試。其中Docker則使用較新的17,客戶端瀏覽器是win10下的chrome,具體信息如上表所示。相關硬件信息如下所示

表2 硬件環境

硬件類別

硬件名稱

數量/容量

CPU

Intel(R) Xeon(R) CPU E7- 4820 @ 2.00GHz

8cores/per cpu*4顆

內存

Fujitsu

64GB

硬盤

Seagate S1DHXER0

2TB

網卡

NetXen Incorporated NX3031 Multifunction

1/10-Gigabit

服務器名稱

HP ProLiant DL580 G7

2

安裝測試

docker安裝

根據IBM官方文檔1的要求docker版本要求如下所示:

表3 docker要求版本

docker類型

要求版本

docker-ce

1.12~1.13.1、17.03、17.05、17.06、17.09

docker-ee

1.12~1.13.1、17.03、17.09

根據上表要求此處選擇版本爲17.12.0-ce,如果有自己的REPO則可以利用如下命令完成下載。

#yuminstall docker-ce

否則可以從Docker官方網站下載所需版本:https://download.docker.com/linux/static/edge/x86_64/,選擇docker-17.12.0-ce.tgz.

下載完成後完成解壓操作,解壓出來的文件如下所示

圖1 解壓docker後的文件

 

 解壓完成後則拷貝所有文件至/usr/bin下面,並利用如下命令驗證是否可以成功使用,如下所示如果成功出現版本信息則表示成功。

[root@cs2c58 docker]# docker version
Client:
 Version:	17.12.0-ce
 API version:	1.35
 Go version:	go1.9.2
 Git commit:	c97c6d6
 Built:	Wed Dec 27 20:05:38 2017
 OS/Arch:	linux/amd64

Server:
 Engine:
  Version:	17.12.0-ce
  API version:	1.35 (minimum version 1.12)
  Go version:	go1.9.2
  Git commit:	c97c6d6
  Built:	Wed Dec 27 20:12:29 2017
  OS/Arch:	linux/amd64
  Experimental:	false
[root@cs2c58 docker]# 

由於使用的RHEL7.4使用的是systemd管理服務方式,需要手動添加/etc/systemd/system/docker.service文件用來docker服務端的停止和啓動,具體添加內容如下所示

[root@cs2c58 docker]# systemctl cat docker
# /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container
Documentation=https://docs.docker.com
After=docker.service

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=process
Restart=on-failure
StartLimitsBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
[root@cs2c58 docker]# 

驗證docker服務是否正常啓動,同時利用systemctl start/stop docker來驗證是否能夠正常啓動

[root@cs2c58 docker]# systemctl status docker
● docker.service - Docker Application Container
   Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-03-14 08:44:24 CST; 10h ago
     Docs: https://docs.docker.com
 Main PID: 904 (dockerd)
   CGroup: /system.slice/docker.service
           ├─  904 /usr/bin/dockerd
           ├─ 3322 docker-containerd --config /var/run/docker/containerd/containerd.toml
           ├─14052 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5000 -container-ip 172.17.0.2 -container-port 5000
           ├─14057 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/52a71320778bafae214762fa...
           └─22737 docker-applyLayer /var/lib/docker/overlay/4a1a883812cc09815a2d14fa59a40ff56e75eca40bbc72ee67892b836615b9d0/root

Mar 14 08:44:24 cs2c58 dockerd[904]: time="2018-03-14T08:44:24.875204881+08:00" level=info msg="API listen on /var/run/docker.sock"
Mar 14 08:44:24 cs2c58 systemd[1]: Started Docker Application Container.
Mar 14 15:06:55 cs2c58 dockerd[904]: time="2018-03-14T15:06:55.128224368+08:00" level=info msg="Attempting next endpoint for push after error: Get http...n refused"
Mar 14 15:06:55 cs2c58 dockerd[904]: time="2018-03-14T15:06:55.128354621+08:00" level=info msg="Attempting next endpoint for push after error: Get http...n refused"
Mar 14 15:10:31 cs2c58 dockerd[904]: time="2018-03-14T15:10:31.603763073+08:00" level=info msg="ignoring event" module=libcontainerd namespace=moby top...nerCreate"
Mar 14 15:10:31 cs2c58 dockerd[904]: time="2018-03-14T15:10:31+08:00" level=info msg="shim docker-containerd-shim started" address="/containerd-shim/mo... pid=14057
Mar 14 15:10:32 cs2c58 dockerd[904]: time="2018-03-14T15:10:32.117269875+08:00" level=warning msg="unknown container" container=52a71320778bafae214762f...ugins.moby
Mar 14 15:10:32 cs2c58 dockerd[904]: time="2018-03-14T15:10:32.226169393+08:00" level=warning msg="unknown container" container=52a71320778bafae214762f...ugins.moby
Mar 14 15:21:30 cs2c58 dockerd[904]: time="2018-03-14T15:21:30.423856068+08:00" level=info msg="Attempting next endpoint for pull after error: manifest...t unknown"
Mar 14 15:21:35 cs2c58 dockerd[904]: time="2018-03-14T15:21:35.314512914+08:00" level=info msg="Attempting next endpoint for pull after error: manifest...t unknown"
Hint: Some lines were ellipsized, use -l to show in full.
[root@cs2c58 docker]# 

完成基本的準備後,爲了提高後續下載的速度此處使用了官方的鏡像加速網站。此處利用docker新版本支持的json格式,在/etc/docker/daemon.json中添加如下內容以提高下載鏡像的速度。如下所示的第一行即表示鏡像加速網站,下面一行則是本地的鏡像倉庫,下載完成一次後則能在局域網內多次快速使用相關鏡像了(本地倉庫的相關配置請參見另外一篇相關博文)。

[root@cs2c58 docker]# cat /etc/docker/daemon.json 
{ "registry-mirrors":["https://registry.docker-cn.com"],
       	"insecure-registries":["10.1.40.58:5000"] }
[root@cs2c58 docker]# 

ICP安裝

完成上述docker安裝後,請參考IBM官網中對於安裝ICP的相關要求,此次測試環境已經完全按照官方要求去搭建(PS:其實硬件稍微差一點只是速度慢一點)。由於此處使用的爲ICP社區版本不能使用期HA的功能,但是可以使用多臺工作節點。因此此處測試第一次時將master、worker、proxy節點均放到一個節點上,後續添加另外一個工作節點。下圖爲官方最小要求


安裝前準備

  • 節點間的免密操作

節點之間免密登錄,主要是localhost

關鍵命令:ssh-keygen-t rsa生成公鑰,ssh-copy-id-i localhost

  • 驗證免密是否成功

ssh localhost不需要密碼直接登錄

下載ibmcom/icp-inception

完成準備後則開始利用docker完成下載,使用如下命令

#docker pull ibmcom/icp-inception:2.1.0.1

完成後驗證是否下載完成,如果利用docker images可以找到則表示下載完成

[root@cs2c58 docker]# docker images |grep -i ibmcom/icp-inception
ibmcom/icp-inception-ppc64le                     2.1.0.1             e615f4f30f25        2 months ago        331MB
[root@cs2c58 docker]# 

安裝ICP

1.創建配置目錄,並切換到此目錄

#mkdir /opt/ibm-cloud-private-ce
#cd /opt/ibm-cloud-private-ce

2.提取配置文件

#docker run -e LICENSE=accept \
-v "$(pwd)":/data ibmcom/icp-inception:2.1.0.1 cp -r cluster /data

3.驗證提取的配置文件,當前文件夾下回生成如下圖所示內容


4.以master節點作爲boot節點,保證此節點可以免密碼登錄到其他工作節點上,配置相關配置文件

1) `pwd`/cluster/hosts配置,如果是單節點的則可以將所有部分內容都填寫一個IP,此處配置HAICP,因此按照如下配置所示,其中master必須是3、5或者更多,proxy一個或多個都行(注意:同一個IP用於多個功能則需要在不同部分添加,如下所示)


            2)部署環境

step1:切換到cluster目錄中

step2:部署環境,執行如下命令:

#docker run -e LICENSE=accept --net=host \
-t -v "$(pwd)":/installer/cluster \
ibmcom/icp-inception:2.1.0.1 install

上述四個步驟則能完成ICP的安裝部署,此時終端會顯示所有的Failed=0則表示正確安裝。完成後驗證方式如下所示

打開https://10.1.87.23[master_ip]:8443,默認用戶名密碼爲admin/admin


完成登錄後,顯示的DashBoard如下圖所示


重啓ICP

#systemctl restart docker kubelet

ICP安裝過程中問題

1.使用的端口被佔用

關閉該端口或者停止該端口所佔用的服務即可


利用如下命令查看端口被佔用的進程
#lsof -i:[port_id]

舉例如下圖所示,查看80端口被佔用情況。

2.網絡狀況不良


由於在install過程中需要下載必須的鏡像,而網絡狀況會影響下載速度,導致中間出現如上圖所示類似錯誤,重複執行INSTALL後則通過,狀況偶發,因此在IBM工程師的見一下提供如下表所示的必須鏡像,我們在執行INSTALL之前下將下列鏡像pull到本地,具體腳本如下所示

docker pull ibmcom/icp-inception:2.1.0.1
docker pull ibmcom/icp-catalog-ui:2.1.0.1
docker pull ibmcom/iam-policy-administration:2.1.0.1
docker pull ibmcom/kubernetes:v1.8.3
docker pull ibmcom/icp-datastore:2.1.0.1
docker pull ibmcom/icp-platform-ui:2.1.0.1
docker pull ibmcom/iam-policy-decision:2.1.0.1
docker pull ibmcom/iam-token-service:2.1.0.1
docker pull ibmcom/unified-router:2.1.0.1
docker pull ibmcom/icp-platform-api:2.1.0.1
docker pull ibmcom/icp-identity-provider:2.1.0.1
docker pull ibmcom/icp-image-manager:2.1.0.1
docker pull ibmcom/icp-router:2.1.0.1
docker pull ibmcom/icp-platform-auth:2.1.0.1
docker pull ibmcom/icp-identity-manager:2.1.0.1
docker pull ibmcom/icp-helm-api:2.1.0.1
docker pull ibmcom/icp-helm-repo:2.1.0.1
docker pull ibmcom/metering-data-manager:2.1.0.1
docker pull ibmcom/metering-server:2.1.0.1
docker pull ibmcom/metering-ui:2.1.0.1
docker pull ibmcom/metering-reader:2.1.0.1
docker pull ibmcom/service-catalog-service-catalog:v0.1.2
docker pull ibmcom/nginx-ingress-controller:0.9.0-beta.13
docker pull ibmcom/indices-cleaner:0.2
docker pull ibmcom/icp-initcontainer:1.0.0
docker pull ibmcom/rescheduler:v0.5.2
docker pull ibmcom/tiller:v2.6.0
docker pull ibmcom/cfc-router:1.2.0
docker pull ibmcom/calico-policy-controller:v0.7.0
docker pull ibmcom/kube-state-metrics:v1.0.0
docker pull ibmcom/calico-node:v2.4.1
docker pull ibmcom/grafana:4.4.3
docker pull ibmcom/calico-ctl:v1.4.0
docker pull ibmcom/calico-cni:v1.10.0
docker pull ibmcom/curl:3.6
docker pull ibmcom/filebeat:5.5.1
docker pull ibmcom/logstash:5.5.1
docker pull ibmcom/elasticsearch:5.5.1
docker pull ibmcom/alertmanager:v0.8.0
docker pull ibmcom/cfc-auth:1.2.0
docker pull ibmcom/heapster:v1.4.0
docker pull ibmcom/k8s-dns-sidecar:1.14.4
docker pull ibmcom/k8s-dns-kube-dns:1.14.4
docker pull ibmcom/k8s-dns-dnsmasq-nanny:1.14.4
docker pull ibmcom/prometheus:v1.7.1
docker pull ibmcom/kubernetes:v1.6.1
docker pull ibmcom/etcd:v3.1.5
docker pull ibmcom/node-exporter:v0.14.0
docker pull ibmcom/elasticsearch:2.4.1
docker pull ibmcom/configmap-reload:v0.1
docker pull ibmcom/defaultbackend:1.2
docker pull ibmcom/mariadb:10.1.16
docker pull ibmcom/registry:2
docker pull ibmcom/collectd-exporter:0.3.1
docker pull ibmcom/pause:3.0

其中相關鏡像的Tag以及名稱如下表所示

倉庫及名稱

版本號

ibmcom/icp-inception-ppc64le:

2.1.0.1

ibmcom/icp-catalog-ui-ppc64le:

2.1.0.1

ibmcom/iam-policy-administration-ppc64le:

2.1.0.1

ibmcom/kubernetes-ppc64le:

v1.8.3

ibmcom/icp-datastore-ppc64le:

2.1.0.1

ibmcom/icp-platform-ui-ppc64le:

2.1.0.1

ibmcom/iam-policy-decision-ppc64le:

2.1.0.1

ibmcom/iam-token-service-ppc64le:

2.1.0.1

ibmcom/unified-router-ppc64le:

2.1.0.1

ibmcom/icp-platform-api-ppc64le:

2.1.0.1

ibmcom/icp-identity-provider-ppc64le:

2.1.0.1

ibmcom/icp-image-manager-ppc64le:

2.1.0.1

ibmcom/icp-router-ppc64le:

2.1.0.1

ibmcom/icp-platform-auth-ppc64le:

2.1.0.1

ibmcom/icp-identity-manager-ppc64le:

2.1.0.1

ibmcom/icp-helm-api-ppc64le:

2.1.0.1

ibmcom/icp-helm-repo-ppc64le:

2.1.0.1

ibmcom/metering-data-manager-ppc64le:

2.1.0.1

ibmcom/metering-server-ppc64le:

2.1.0.1

ibmcom/metering-ui-ppc64le:

2.1.0.1

ibmcom/metering-reader-ppc64le:

2.1.0.1

ibmcom/service-catalog-service-catalog-ppc64le:

v0.1.2

ibmcom/nginx-ingress-controller-ppc64le:

0.9.0-beta.13

ibmcom/indices-cleaner-ppc64le:

0.2

ibmcom/icp-initcontainer-ppc64le:

1.0.0

ibmcom/rescheduler-ppc64le:

v0.5.2

ibmcom/tiller-ppc64le:

v2.6.0

ibmcom/helm-ppc64le:

v2.6.0

ibmcom/calico-policy-controller-ppc64le:

v0.7.0

ibmcom/kube-state-metrics-ppc64le:

v1.0.0

ibmcom/calico-node-ppc64le:

v2.4.1

ibmcom/grafana-ppc64le:

4.4.3

ibmcom/calico-ctl-ppc64le:

v1.4.0

ibmcom/calico-cni-ppc64le:

v1.10.0

ibmcom/curl-ppc64le:

3.6

ibmcom/kibana-ppc64le:

5.5.1

ibmcom/filebeat-ppc64le:

5.5.1

ibmcom/logstash-ppc64le:

5.5.1

ibmcom/elasticsearch-ppc64le:

5.5.1

ibmcom/alertmanager-ppc64le:

v0.8.0

ibmcom/heapster-ppc64le:

v1.4.0

ibmcom/k8s-dns-sidecar-ppc64le:

1.14.4

ibmcom/k8s-dns-kube-dns-ppc64le:

1.14.4

ibmcom/k8s-dns-dnsmasq-nanny-ppc64le:

1.14.4

ibmcom/prometheus-ppc64le:

v1.7.1

ibmcom/etcd-ppc64le:

v3.1.5

ibmcom/node-exporter-ppc64le:

v0.14.0

ibmcom/configmap-reload-ppc64le:

v0.1

ibmcom/defaultbackend-ppc64le:

1.2

ibmcom/mariadb-ppc64le:

10.1.16

ibmcom/registry-ppc64le:

2

ibmcom/collectd-exporter-ppc64le:

0.3.1

ibmcom/pause-ppc64le:

3

3.重啓master或者重啓docker出現504/502Bad Gateway

開始時環境使用虛擬機作爲節點,其CPU處理速度較慢,因此分析主要原因是部分pods啓動不成功或者啓動較慢。後續更換成物理機器基本不會出現類似問題。同時可以利用命令行的方式查看當前集羣的pods狀態用來判斷資源啓動是否完成。命令行方式訪問console以及管理pods方式請參考下一篇博文

小結

此處主要記錄在RHELV7Update4下安裝ICP的過程,後續具體使用下篇博文繼續。

有幾點需要以後注意的:

1.前期瀏覽官方文檔去了解該產品時間較長,其實可以相應縮短時間,在實際測試需要時再去看。

2.由於docker使用不夠熟悉,出現:docker.service出錯導致停止服務出錯、使用哪個版本時選擇困惑、加速鏡像未使用下載速度太慢。以後對於不熟悉的內容可以先找類似的已有的去模仿(docker.service就可以仿照Centos的不用完全自己嘗試寫)、重要的技術需要提前熟悉或者明確自己所需功能

3.如果遇到問題,有人可以支持的情況下先把問題拋出去,然後自己想辦法去解決,因爲工作第一要務是完成,後續纔是學習;

4.分析問題思路需要清晰,例如上述出現不停的Retries的時候、情況偶然發生的時候就需要考慮到網絡狀況

 參考鏈接

1.ICP知識庫

2.docker-centos安裝

3.ICP介紹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章