OpenShift是基于Docker和Kubernetes的开源容器云平台,其开源社区版本为OpenShift Origin。 OpenShift的安装方式有很多种:

  • 使用二进制包手工安装
  • 使用Openshift Installer快速安装
  • 使用ansible进行多节点集群安装
  • 使用All in One的Docker镜像启动一个OpenShift实例

本文作为我的OpenShift学习笔记的开篇,将首先学习使用二进制手动安装的方式快速启动一个OpenShift Origin实例用于学习和测试。

环境准备和Docker安装

准备一台CentOS 7.3主机,并在其上安装Docker。 这里安装是Docker 17.03.2的版本。

 1yum install -y yum-utils device-mapper-persistent-data lvm2
 2yum-config-manager \
 3    --add-repo \
 4    https://download.docker.com/linux/centos/docker-ce.repo
 5
 6yum makecache fast
 7
 8yum install -y --setopt=obsoletes=0 \
 9  docker-ce-17.03.2.ce-1.el7.centos \
10  docker-ce-selinux-17.03.2.ce-1.el7.centos
11
12systemctl start docker
13systemctl enable docker

修改docker的cgroup驱动为systemd, 即修改或创建/etc/docker/daemon.json,加入下面的内容:

1{
2  "exec-opts": ["native.cgroupdriver=systemd"]
3}

重启docker:

1systemctl restart docker

安装OpenShift Origin

首先下载OpenShift Origin的二进制文件:

1cd /opt
2wget https://github.com/openshift/origin/releases/download/v3.6.1/openshift-origin-server-v3.6.1-008f2d5-linux-64bit.tar.gz
3tar -zxvf openshift-origin-server-v3.6.1-008f2d5-linux-64bit.tar.gz
4mv openshift-origin-server-v3.6.1-008f2d5-linux-64bit openshift

先看一下下载的二进制文件:

1cd /opt/openshift
2ls
3kube-apiserver           kubectl  kubelet     kube-scheduler  oadm  openshift
4kube-controller-manager  kubefed  kube-proxy  LICENSE         oc    README.md

一般以上的二进制文件是我们所熟悉,即Kubernetes的二级制文件,另外还有oadm, openshift, oc 3个二进制可执行文件。

将/opt/openshift加入到PATH环境变量。

1vi /etc/profile
2
3PATH=$PATH:/opt/openshift

执行source /etc/profile使环境变量生效。

查看一下openshift的版本:

1openshift version
2openshift v3.6.1+008f2d5
3kubernetes v1.6.1+5115d708d7
4etcd 3.2.1

可以看出openshift 3.6.1使用的Kubernetes的版本为1.6.1,etcd的版本为3.2.1。

启动openshift:

1cd /opt/openshift
2./openshift start --public-master=https://<ip>:8443

控制台会打印很多log,另起一个终端会看到本地监听了8443端口。 浏览器打开http://<ip>:8443,打开登录页面后使用默认的用户名/密码 dev/dev登录即可。

openshift-homepage

OpenShift的项目

从登录到OpenShift的首页可以看出,首先要做的就是创建一个项目。 项目是OpenShift组织资源的方式。 OpenShift的用户可以将不同类型的相关资源放到一个项目中进行管理。 Openshift的管理员可以以项目为单位进行配额管理和网络隔离。

接下来我们创建一个名称为prj的项目后,prj项目的主页如下:

openshift-project.jpg

可以看一下左侧的菜单和Kubernetes的Dashboard的菜单挺像的,是Deployment, StatefulSet, Pod, Service这些Kubernetes中的资源对象。

当点击Add to Prject并在Tab菜单Deploy Image的image name输入框中直接输入nginx,尝试部署docker hub中最新的nginx时报了下面的错误:

1Image nginx runs as the root user which might not be permitted by your cluster administrator.

这是因为OpenShift对容器的安全要求更加严格,OpenShift默认在启动容器时使用的是非root用户,docker hub中的nginx镜像默认是以root用户的身份执行容器内的程序的。