zoukankan      html  css  js  c++  java
  • OpenShift强大的oc set命令详解

    前言:
    OpenShift的client工具oc功能非常强大,几乎能实现所有的操作,它的每一个子命令都能实现非常多的功能。其中有个容易被忽视却很强大的子命令oc set可以实现对资源很多额外的配置,包括有环境变量、资源限制、持久化卷挂载、健康检查等等。
    下面是oc set的帮助详情。

    帮助命令:

    [root@master ~]# oc set
    Configure application resources
    Usage:
      oc set COMMAND [flags]
    
    Replication controllers, deployments, and daemon sets:
      env             Update environment variables on a pod template
      resources       Update resource requests/limits on objects with pod templates
      volumes         Update volumes on a pod template
      probe           Update a probe on a pod template
      deployment-hook Update a deployment hook on a deployment config
      image           Update image of a pod template
    
    Manage secrets:
      build-secret    Update a build secret on a build config
    
    Manage application flows:
      image-lookup    Change how images are resolved when deploying applications
      triggers        Update the triggers on one or more objects
      build-hook      Update a build hook on a build config
    
    Control load balancing:
      route-backends  Update the backends for a route
    
    Use "oc set <command> --help" for more information about a given command.
    Use "oc options" for a list of global command-line options (applies to all commands).
    

    使用场景:

    1.环境变量 oc set env
    (1)列出sample dc设置的环境变量
    $ oc set env dc/sample --list # 列出sample dc设置的环境变量

    (2)为sample dc设置环境变量NAME=value
    $ oc set env dc/sample NAME=value # 为sample dc设置环境变量NAME=value

    (3)从secret mysecret中向sample dc导入环境变量
    $ oc set env --from=secret/mysecret dc/sample #从secret mysecret中向sample dc导入环境变量

    (4)从configmap myconfigmap中筛选出前缀为MYSQL_的变量向sample dc中导入为环境变量
    $ oc set env --from=configmap/myconfigmap --prefix=MYSQL_ dc/sample #从configmap myconfigmap中筛选出前缀为MYSQL_的变量向sample dc中导入为环境变量

    (5)删除sample dc中的名为NAME的环境变量
    $ oc set env dc/sample NAME- #删除sample dc中的名为NAME的环境变量

    2.资源限制 oc set resources
    (1)为dc/sample中的容器设置内存限制
    $ oc set resources dc/sample --limits=memory=2Gi --requests=memory=1Gi

    (2)给sample dc中的所有容器设置资源cpu和memory限制
    $ oc set resources dc/sample --limits=cpu=200m,memory=2Gi --requests=cpu=100m,memory=1Gi #给sample dc中的所有容器设置资源cpu和memory限制

    (3)给sample dc中的nginx容器设置资源cpu和memory限制
    $ oc set resources dc/sample -c=nginx --limits=cpu=200m,memory=2Gi --requests=cpu=100m,memory=1Gi #给sample dc中的nginx容器设置资源cpu和memory限制

    (4)删除sample dc资源限制配置
    $ oc set resources dc/sample --limits=cpu=0,memory=0 --requests=cpu=0,memory=0 #删除资源限制配置

    (5)不执行更新,只显示修改的配置
    $ oc set resources dc/sample --limits=cpu=200m,memory=512Mi -o yaml #不执行更新,只显示修改的配置

    3.挂载点 oc set volumes
    (1)查看sample dc的挂载点
    $ oc set volumes dc/sample

    (2)查看当前项目下的所有dc的挂载点
    $ oc set volumes dc --all

    (3)给sample dc创建一个挂载点/data,挂载emptyDir
    $ oc set volumes dc/sample --add --mount-path=/data

    (4)使用一个现有的名为pvc1的pvc挂载到名为v1的挂载点
    $ oc set volumes dc/sample --add --name=v1 -t pvc --claim-name=pvc1 --overwrite

    (5)删除sample dc中名为v1的挂载点
    $ oc set volumes dc/sample --remove --name=v1

    (6)新建一个pvc挂载到sample dc中名为v1的挂载点
    $ oc set volumes dc/sample --add --name=v1 -t pvc --claim-size=1G --overwrite

    (7)更改名为v1的挂载点对应在sample dc中的目录为/data2
    $ oc set volumes dc/sample --add --name=v1 -m /data2 --overwrite

    (8)删除sample dc中的nginx容器中名为v1的挂载点
    $ oc set volumes dc/sample --remove --name=v1 --containers=nginx

    (9)将configmap中的nginx.conf配置挂载到/data/nginx.config文件中
    $ oc set volumes dc/sample --add --name=v1 --mount-path=/data/nginx.conf --type=configmap --configmap-name=nginx --sub-path=nginx.conf

    
    另外还有一些常用的参数
    --claim-name:指定pvc的名字
    --claim-class:指定pvc使用的StorageClass名
    --claim-mode:指定pvc访问类型,默认为ReadWriteOnce(rwo),另外还有ReadWriteMany(rwm)和ReadOnlyMany(rom)
    --default-mode:挂载目录的权限,默认为0644,必须在0000和0777之间取值
    --configmap-name:挂载到挂载点的configmap名,必须设置挂载类型为configmap
    --secret-name:挂载到挂载点的secret名,必须设置挂载类型为secret
    --sub-path:只挂载指定的子目录
    --path:本地主机路径,必须设置挂载类型为hostPath
    --type:挂载类型,emptyDir,hostPath,secret,configmap
    

    4.健康检查 oc set probe
    (1)给sample dc添加liveness检查shell

    $ oc set probe dc/sample --liveness --failure-threshold 3 --initial-delay-seconds 40 -- echo ok
    

    (2)给sample dc添加readiness检查HTTP
    $ oc set probe dc/sample --readiness --failure-threshold 3 --initial-delay-seconds 20 --get-url=http://:9000/about

    (3)给sample dc添加readiness检查TCP
    $ oc set probe dc/sample --readiness --open-tcp=3306

    (4)设置readiness的初始检查延时时间30s,超时时间为3s
    $ oc set probe dc/sample --readiness --initial-delay-seconds=30 --timeout=3

    (5)删除rediness和liveness检查
    $ oc set probe dc/sample --remove --readiness --liveness

    另外还有一些常用的参数
    --period-seconds:默认为10,两次检查间隔时长,单位为s
    --success-threshold:默认为1,检查成功次数达到1次,才会触发成功处理操作
    --failure-threshold:默认为3,检查失败次数达到3次,才会触发失败处理操作
    

    5.设置Deploymentconfig钩子 oc set deployment-hook
    (1)为sample dc中的strategy设置pre钩子
    $ oc set deployment-hook dc/sample --container=sample --pre -v data -- /var/lib/migrate-db.sh

    (2)为sample dc中的strategy设置mid钩子
    $ oc set deployment-hook dc/sample --mid -v data -e VAR1=value1 -e VAR2=value2 -- /var/lib/prepare-deploy.sh

    (3)删除sample dc的pre、mid及post的钩子
    $ oc set deployment-hook dc/sample --remove --pre --mid --post

    6.更新镜像 oc set image
    (1)为sample dc中的容器sample1设置镜像sample1:v2,为容器sampel2设置镜像sample2:v2
    $ oc set image dc/sample sample1=sample1:v2 sample2=sample2:v2

    (2)为sample dc中的容器app设置镜像为imagestream tag sample/ruby:2.3
    $ oc set image dc/sample app=sample/ruby:2.3 --source=imagestreamtag

    (3)为所有dc中的容器sample设置镜像为sample:v2
    $ oc set image dc sample=sample:v2 --all

    7.设置BuildConfig的拉取/推送镜像、拉取代码的密钥 oc set build-secret
    (1)设置samplebuild bc的拉取镜像的密钥dockerhubsecret
    $ oc set build-secret --pull bc/samplebuild dockerhubsecret

    (2)设置samplebuild bc的推送镜像的密钥dockerhubsecret
    $ oc set build-secret --push --pull bc/samplebuild dockerhubsecret

    (3)设置samplebuild bc的拉取代码的密钥githubsecret
    $ oc set build-secret --source bc/samplebuild githubsecret

    (4)删除sample bc设置的推送镜像密钥
    $ oc set build-secret --push --remove bc/sample

    8.设置触发器 oc set triggers
    (1)列出sample dc当前的触发器
    $ oc set triggers dc/sample

    (2)关闭sample dc所有的自动触发器
    $ oc set triggers dc/sample --manual

    (3)开启sample dc所有的自动触发器
    $ oc set triggers dc/sample --auto

    (4)更新sample bc的github触发器的密钥值
    $ oc set triggers bc/sample --from-github

    (5)删除sample bc的所有触发器
    $ oc set triggers bc/sample --remove-all

    (6)删除sample dc的ConfigChange触发器
    $ oc set triggers dc/sample --from-config --remove

    (7)更新sample bc的ImageStreamTag触发器的镜像Tag为test/sample:latest
    $ oc set triggers bc/sample --from-image=test/sample:latest

    (8)更新sample dc容器sample的ImageStreamTag触发器的镜像Tag为test/sample:latest
    $ oc set triggers dc/sample --from-image=test/sample:latest -c sample

    9.设置BuildConfig的postcommit钩子 oc set build-hook
    (1)设置samplebuild bc的command类型的post-commit
    $ oc set build-hook bc/samplebuild --post-commit --command -- /bin/bash -c /var/lib/test-image.sh

    (2)设置samplebuild bc的script类型的post-commit
    $ oc set build-hook bc/samplebuild --post-commit --script="/var/lib/test-image.sh param1 param2 && /var/lib/done.sh"

    (3)设置samplebuild bc的args类型的post-commit
    $ oc set build-hook bc/samplebuild --post-commit -- arg1 arg2

    command类型、script类型与args类型的区别:
    script:执行时使用/bin/sh -ic替换掉默认的entrypoint来执行代码
    command:不指定解析器,也不使用entrypoint,而是直接执行代码
    args:使用默认的entrypoint执行代码
    

    (4)删除samplebuild bc的post-commit
    $ oc set build-hook bc/samplebuild --post-commit --remove

    10.设置Route的后端服务oc set route-backends
    (1)列出sample route的后端服务
    $ oc set route-backends sample

    (2)设置sample route的后端服务为两个并且流量比为1:9,samplev1(10%),samplev2(90%)
    $ oc set route-backends sample samplev1=1 samplev2=9

    (3)为sample route后端服务samplev1添加10%的流量
    $ oc set route-backends sample --adjust samplev1=+10%

    (4)将sample route所有后端服务流量设为0,该route将无法对外提供服务
    $ oc set route-backends sample --zero

    文章转载至: https://www.jianshu.com/p/eedb6ef37f74?utm_campaign=hugo

  • 相关阅读:
    git Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
    git error: failed to push some refs to 'git@github.com:xxx/xxx.git'
    git LF will be replaced by CRLF in hellogit.txt
    为什么要买保险,并且如何配置保险,以及家庭保险的配置
    Molile App(HTTP/HTML)—Analyze Traffic
    Molile App(HTTP/HTML)—Record and Analyze Traffic
    清空KindEditor富文本编辑器里面的内容方法
    图片上传和显示——上传图片——上传文件)==ZJ
    页面静态化实现——根据模板动态创建静态页
    通过Ajax实现增删改查
  • 原文地址:https://www.cnblogs.com/wenyang321/p/13936462.html
Copyright © 2011-2022 走看看