1.概述
通过二进制安装包,可以快速的完成OpenShift Origin集群的安装,但该集群还是一个“空”集群。对于复杂的应用,OpenShift需要更多的组件支持,而这些组件并没有在安装中完成。同时,OpenShift作为一个容器云平台,默认提供了一系列用户开箱即用、一键部署的应用和服务,这些应用和服务的信息也需要在系统中注册,以便用户在类似软件市场(App Store)的服务目录中选用。
2.命令行工具
oc是OpenShift中一个重要的命令行客户端。OpenShift Web控制台能够完成的事情,通过oc命令也能完成。
可以尝试执行oc version命令查看OpenShift的集群版本信息,测试oc命令是否正常工作。
[root@master ~]# oc version
oc v3.7.1+ab0f056
kubernetes v1.7.6+a08f5eeb62
features: Basic-Auth GSSAPI Kerberos SPNEGO
Server https://192.168.1.41:8443
openshift v3.7.1+ab0f056
kubernetes v1.7.6+a08f5eeb62
更多的命令情况,可通过oc -h查看。
3.以集群管理员登录
在安装组件之前,我们需要以集群管理员的角色登录。在OpenShift中,默认的集群管理员是system:admin。system:admin这个用户拥有最高的权限。与其它用户不同的是,system:admin用户并没有密码,system:admin的登录依赖于证书秘钥。
配置system:admin登录用的证书密码,需要在/etc/profile文件末尾添加如下内容。
export KUBECONFIG=/home/origin/openshift.local.config/master/admin.kubeconfig
export CURL_CA_BUNDLE=/home/origin/openshift.local.config/master/ca.crt
执行source命令,使配置生效。
通过oc login命令登录。
[root@master ~]# oc login -u system:admin
Logged into "https://192.168.1.41:8443" as "system:admin" using existing credentials.
You have access to the following projects and can switch between them with 'oc project <projectname>':
* default
kube-public
kube-system
openshift
openshift-infra
openshift-node
Using project "default".
执行oc whoami命令,即可见当前登录的用户。
[root@master ~]# oc whoami
system:admin
执行oc get node命令查看集群节点信息。
[root@master ~]# oc get node
NAME STATUS AGE VERSION
master.example.com Ready 17h v1.7.6+a08f5eeb62
可以看到该集群只有一个节点。
注:只有集群管理员才有权限查看集群的节点信息。
4.添加Router
首先,需要为集群添加一个Router组件。Router组件是集群中一个重要的组件,它是外界访问集群内容器应用的入口。集群外部的请求都会到达Router,并由Router分发到具体的容器中。
切换到default项目。
[root@master ~]# oc project default
Already on project "default" on server "https://192.168.1.x:8443".
Router组件需要读取集群的信息,因此它关联一个系统账号Service Account,并为这个账号赋权。Service Account是OpenShift中专门供程序和组件使用的账号。OpenShift中有严格的权限和安全保障机制。不同的用户会关联到不同的安全上下文(Security Context Constraint,SCC)。同时,用户或组也会关联到不同的系统角色(Role)。
[root@master ~]# oadm policy add-scc-to-user privileged system:serviceaccount:default:router
scc "privileged" added to: ["system:serviceaccount:default:router"]
执行oadm router命令创建Router实例。
[root@master ~]# oadm router router --replicas=1 --service-account=router
info: password for stats user admin has been set to JGwzYTAoVd
--> Creating router router ...
serviceaccount "router" created
clusterrolebinding "router-router-role" created
deploymentconfig "router" created
service "router" created
--> Success
oadm命令是面向集群管理员的,可以进行集群的管理和配置,oc命令更多的是面向一般用户。在上面的命令中,我们创建了一个名为router的Router。参数--replicas=1表明,我们只想创建一个实例。在实际的生产中,为了达到高用的效果,可以创建多个Router实例实现负责均衡并防止单点失效。
通过oc get pod -n default命令查看Router容器的状态。
[root@master ~]# oc get pod -n default
NAME READY STATUS RESTARTS AGE
router-1-2gxfq 1/1 Running 0 23s
发现容器的状态是running。如果此时检查实验主机上的端口监听状态,可以发现主机的端口80、443正在被Haproxy监听。
[root@master ~]# ss -nlt|egrep "80|443"
LISTEN 0 128 127.0.0.1:10443 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:8053 *:*
LISTEN 0 128 *:443 *:*
LISTEN 0 128 *:8443 *:*
5.添加Registry
部署集群内部的Docker Registry,即内部的Docker镜像仓库。从功能上讲,OpenShift内部的镜像仓库和外部的企业镜像仓库或者DockerHub没有本质的区别。只是这个内部的镜像仓库会用来存放一些“特殊的”镜像,这些镜像是由一个叫Source to Image(S2I)流程产生的。
切换到default项目。
[root@master ~]# oc project default
Already on project "default" on server "https://192.168.1.41:8443".
执行命令部署Registry。
[root@master ~]# oadm registry --config=/home/origin/openshift.local.config/master/admin.kubeconfig --service-account=registry
--> Creating registry registry ...
serviceaccount "registry" created
clusterrolebinding "registry-registry-role" created
deploymentconfig "docker-registry" created
service "docker-registry" created
--> Success
稍等片刻,执行oc get pod -n default命令便可见Registry容器处于运行状态了。
[root@master ~]# oc get pod -n default
NAME READY STATUS RESTARTS AGE
docker-registry-1-998lt 1/1 Running 0 22s
router-1-2gxfq 1/1 Running 0 2m
在本例中,因为我没部署的Registry没有启用HTTPS,所以需要修改Docker的配置,让Docker以非HTTPS的方式连接到Registry。修改/etc/sysconfig/docker文件,为OPTIONS变量值追加--insecure-registry=172.30.0.0/16。修改后的变量值如下。
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=https://docker.mirrors.ustc.edu.cn --insecure-registry=172.30.0.0/16'
重启Docker服务,使修改的配置生效。
[root@master ~]# systemctl restart docker
至此,Registry组件部署完成。
6.添加Image Stream
Image Stream是一组镜像的集合。可以在一个Image Stream中定义一些名称和标签(tag),并定义这些名字及标签指向的具体镜像。在OpenShift上部署容器应用并不一定要用到Image Stream,直接指定镜像的地址也可以完成部署。使用Image Stream为的是方便地将一组相关联的镜像进行整合管理和使用。OpenShift Origin默认为用户定义了一系列开箱即用的Image Stream。
切换到openshift项目。
[root@master ~]# oc project openshift
Now using project "openshift" on server "https://192.168.1.41:8443".
获取https://github.com/openshift/origin/blob/master/examples/image-streams/image-streams-centos7.json的内容,存为image-streams-centos7.json,执行如下命令导入Image Stream。
[root@master opt]# cat image-streams-centos7.json |oc create -f - -n openshift
imagestream "dotnet" created
imagestream "httpd" created
imagestream "jenkins" created
imagestream "mariadb" created
imagestream "mongodb" created
imagestream "mysql" created
imagestream "nginx" created
imagestream "nodejs" created
imagestream "perl" created
imagestream "php" created
imagestream "postgresql" created
imagestream "python" created
imagestream "redis" created
imagestream "ruby" created
imagestream "wildfly" created
通过oc get is -n openshift命令,可以列出刚才导入的Image Stream对象。
[root@master opt]# oc get is -n openshift
NAME DOCKER REPO TAGS UPDATED
dotnet 172.30.204.92:5000/openshift/dotnet latest,2.0 3 minutes ago
httpd 172.30.204.92:5000/openshift/httpd latest,2.4 3 minutes ago
jenkins 172.30.204.92:5000/openshift/jenkins latest,1,2 3 minutes ago
mariadb 172.30.204.92:5000/openshift/mariadb latest,10.2,10.1 3 minutes ago
mongodb 172.30.204.92:5000/openshift/mongodb latest,3.4,3.2 + 2 more... 3 minutes ago
mysql 172.30.204.92:5000/openshift/mysql 5.6,5.5,latest + 1 more... 3 minutes ago
nginx 172.30.204.92:5000/openshift/nginx 1.10,1.8,latest + 1 more... 3 minutes ago
nodejs 172.30.204.92:5000/openshift/nodejs 4,6,8 + 2 more... 3 minutes ago
perl 172.30.204.92:5000/openshift/perl latest,5.24,5.20 + 1 more... 3 minutes ago
php 172.30.204.92:5000/openshift/php latest,7.1,7.0 + 2 more... 3 minutes ago
postgresql 172.30.204.92:5000/openshift/postgresql 9.5,9.4,9.2 + 2 more... 3 minutes ago
python 172.30.204.92:5000/openshift/python 2.7,latest,3.6 + 3 more... 3 minutes ago
redis 172.30.204.92:5000/openshift/redis 3.2,latest 3 minutes ago
ruby 172.30.204.92:5000/openshift/ruby latest,2.4,2.3 + 2 more... 3 minutes ago
wildfly 172.30.204.92:5000/openshift/wildfly 11.0,10.1,10.0 + 4 more... 3 minutes ago
此时再打开OpenShift的Web控制,可以发现多了很多镜像。
7.添加Template
待补充。
网友评论