005-完善OpenShif Origin集群

作者: 四冶读史 | 来源:发表于2018-04-23 17:04 被阅读38次

    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

    待补充。

    相关文章

      网友评论

      本文标题:005-完善OpenShif Origin集群

      本文链接:https://www.haomeiwen.com/subject/tupllftx.html