为了账号安全,请及时绑定邮箱和手机立即绑定

05-完善OpenShif Origin集群

标签:
Docker

1.概述

通过二进制安装包,可以快速的完成OpenShift Origin集群的安装,但该集群还是一个“空”集群。对于复杂的应用,OpenShift需要更多的组件支持,而这些组件并没有在安装中完成。同时,OpenShift作为一个容器云平台,默认提供了一系列用户开箱即用、一键部署的应用和服务,这些应用和服务的信息也需要在系统中注册,以便用户在类似软件市场(App Store)的服务目录中选用。

2.命令行工具

oc是OpenShift中一个重要的命令行客户端。OpenShift Web控制台能够完成的事情,通过oc命令也能完成。
可以尝试执行oc version命令查看OpenShift的集群版本信息,测试oc命令是否正常工作。

[root@master ~]# oc versionoc v3.7.1+ab0f056
kubernetes v1.7.6+a08f5eeb62
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://192.168.1.41:8443openshift 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.kubeconfigexport CURL_CA_BUNDLE=/home/origin/openshift.local.config/master/ca.crt

执行source命令,使配置生效。
通过oc login命令登录。

[root@master ~]# oc login -u system:adminLogged 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 whoamisystem:admin

执行oc get node命令查看集群节点信息。

[root@master ~]# oc get nodeNAME                STATUS    AGE       VERSIONmaster.example.com   Ready     17h       v1.7.6+a08f5eeb62

可以看到该集群只有一个节点。
注:只有集群管理员才有权限查看集群的节点信息。

4.添加Router

首先,需要为集群添加一个Router组件。Router组件是集群中一个重要的组件,它是外界访问集群内容器应用的入口。集群外部的请求都会到达Router,并由Router分发到具体的容器中。
切换到default项目。

[root@master ~]# oc project defaultAlready 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:routerscc "privileged" added to: ["system:serviceaccount:default:router"]

执行oadm router命令创建Router实例。

[root@master ~]# oadm router router --replicas=1 --service-account=routerinfo: 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 defaultNAME             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 defaultAlready 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 defaultNAME                      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 openshiftNow 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 openshiftimagestream "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 openshiftNAME         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

待补充。



作者:四冶
链接:https://www.jianshu.com/p/0d6050f44c04


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
45
获赞与收藏
144

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消