基于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(社区版本)

扫描二维码关注公众号,回复: 1137408 查看本文章

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介绍

猜你喜欢

转载自blog.csdn.net/skymfc/article/details/79558415