• 李诚云原生技术分享


    ------------恢复内容开始------------

    1、第一新一代的应用编排出来之后打镜像,对应的编排文件如下

    整个文件的编排目录如下,我们在改目录下创建一个dockfile文件

     Dockerfile文件的内容如下

    1.基于行内的jdk镜像

    把当前宿主机器中的demo文件夹拷贝到容器中,默认容器的workdir是当前的根目录

     接下来进行镜像的编排操作

     这里使用到了一个概念:https://www.cnblogs.com/sammyliu/p/10083659.html

    在上面的docker镜像中指定当前镜像启动之后在ocp集群中镜像启动之后对应的pod要以root用户启动,默认情况仅仅只在dockfile中指定USER root是远远不够的

    Openshift平台中,当在容器内需要用到root权限时,仅仅在dockerfile中指定user为root还是不够的, https://www.pianshen.com/article/85621206279/

    具体参考博客:https://www.cnblogs.com/sammyliu/p/10083659.html

    这里使用的到的是几个命令和概念

     这里和控制器用户ServicAccount服务账户相关,用来指定pod到底是以啥具体用户执行、能够操作宿主机器上面的权限资源

    Service account:服务账户。这是跟一个项目关联的特殊系统用户,每个用户被一个 ServiceAccount 对象表示,通常是指 pod 中运行主进程的用户

    pod 中的用户(serviceaccount)访问pod内和宿主机上操作系统资源,由 scc(security context constraints)进行控制。

    pod 中的应用除了有访问 OpenShift API 和内部镜像仓库之外,还有一些系统资源访问要求。比如:

    • 要求以任意用户甚至是 root 来运行 pod 中的主进程
    • 要求访问宿主机上的文件系统
    • 要求访问宿主机上的网络

    对于这些操作系统资源的访问权限,OpenShift 利用 scc 来进行控制。这就要求:

    • 在 scc 中进行权限控制。这部分在后面介绍。
    • 在 servie account 和 sa 之间建立联系。每个 scc 都有指定使用它的用户列表。所有通过身份认证了的用户都只在 restricted 这个 scc 的用户列表之中,包括 service account。因此,pod 默认使用的是 restricted scc。要使它使用其它的scc,就要将它的 service account user 加入到要使用的 scc 的用户列表之中。这在 scc 部分具体介绍。

    前面说过,SCC 用于控制访问系统资源的权限,那说明只有  service account  才需要使用 scc。没在文档中看到自然人用户 user 使用 scc 的例子。

     上面表示的几个点是最重要的,我们在dockfile中指定如果指定了任意用户的uid,这里我们只需要在openshift的编排文件中指定scc为anyuid就可以了,上面的编排文件中我在dockerfile中指定USER root指定用户为root,这里在openshift的编排文件中指定scc为anyuid就可以使用root的uid来启动容器了

    OpenShift 默认创建了几个典型的 scc,pod 默认使用的是 restricted scc

    我们来看下

    ------------恢复内容结束------------

  • 相关阅读:
    浅谈flume
    浅谈storm
    浅谈zookeeper
    IntelliJ IDEA 使用教程
    浅谈spark
    添加本地jar包到maven仓库
    eclipse通过maven进行打编译
    pom.xml中添加远程仓库
    maven编译错误maven-assembly-plugin:2.2-beta-5:assembly (default-cli) on project
    最长上升子序列
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/15158629.html
Copyright © 2020-2023  润新知