OpenShift强大的oc set命令详解

OpenShift

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).

环境变量 oc set env

  1. 列出sample dc设置的环境变量
$ oc set env dc/sample --list  # 列出sample dc设置的环境变量
  1. 为sample dc设置环境变量NAME=value
$ oc set env dc/sample NAME=value # 为sample dc设置环境变量NAME=value
  1. 从secret mysecret中向sample dc导入环境变量
$ oc set env --from=secret/mysecret dc/sample #从secret mysecret中向sample dc导入环境变量
  1. 从configmap myconfigmap中筛选出前缀为MYSQL_的变量向sample dc中导入为环境变量
$ oc set env --from=configmap/myconfigmap --prefix=MYSQL_ dc/sample #从configmap myconfigmap中筛选出前缀为MYSQL_的变量向sample dc中导入为环境变量
  1. 删除sample dc中的名为NAME的环境变量
$ oc set env dc/sample NAME- #删除sample dc中的名为NAME的环境变量

资源限制 oc set resources

  1. 为dc/sample中的容器设置内存限制
$ oc set resources dc/sample --limits=memory=2Gi --requests=memory=1Gi
  1. 给sample dc中的所有容器设置资源cpu和memory限制
$ oc set resources dc/sample --limits=cpu=200m,memory=2Gi --requests=cpu=100m,memory=1Gi #给sample dc中的所有容器设置资源cpu和memory限制
  1. 给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限制
  1. 删除sample dc资源限制配置
$ oc set resources dc/sample --limits=cpu=0,memory=0 --requests=cpu=0,memory=0 #删除资源限制配置
  1. 不执行更新,只显示修改的配置
$ oc set resources dc/sample --limits=cpu=200m,memory=512Mi -o yaml #不执行更新,只显示修改的配置

挂载点 oc set volumes

  1. 查看sample dc的挂载点
$ oc set volumes dc/sample
  1. 查看当前项目下的所有dc的挂载点
$ oc set volumes dc --all
  1. 给sample dc创建一个挂载点/data,挂载emptyDir
$ oc set volumes dc/sample --add --mount-path=/data
  1. 使用一个现有的名为pvc1的pvc挂载到名为v1的挂载点
$ oc set volumes dc/sample --add --name=v1 -t pvc --claim-name=pvc1 --overwrite
  1. 删除sample dc中名为v1的挂载点
$ oc set volumes dc/sample --remove --name=v1
  1. 新建一个pvc挂载到sample dc中名为v1的挂载点
$ oc set volumes dc/sample --add --name=v1 -t pvc --claim-size=1G --overwrite
  1. 更改名为v1的挂载点对应在sample dc中的目录为/data2
$ oc set volumes dc/sample --add --name=v1 -m /data2 --overwrite
  1. 删除sample dc中的nginx容器中名为v1的挂载点
$ oc set volumes dc/sample --remove --name=v1 --containers=nginx
  1. 将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

健康检查 oc set probe

  1. 给sample dc添加liveness检查shell
$ oc set probe dc/sample --liveness --failure-threshold 3 --initial-delay-seconds 40 -- echo ok
  1. 给sample dc添加readiness检查HTTP
$ oc set probe dc/sample --readiness --failure-threshold 3 --initial-delay-seconds 20 --get-url=http://:9000/about
  1. 给sample dc添加readiness检查TCP
$ oc set probe dc/sample --readiness --open-tcp=3306
  1. 设置readiness的初始检查延时时间30s,超时时间为3s
$ oc set probe dc/sample --readiness --initial-delay-seconds=30 --timeout=3
  1. 删除rediness和liveness检查
$ oc set probe dc/sample --remove --readiness --liveness

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

设置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
  1. 为sample dc中的strategy设置mid钩子
$ oc set deployment-hook dc/sample --mid -v data -e VAR1=value1 -e VAR2=value2 -- /var/lib/prepare-deploy.sh
  1. 删除sample dc的pre、mid及post的钩子
$ oc set deployment-hook dc/sample --remove --pre --mid --post

更新镜像 oc set image

  1. 为sample dc中的容器sample1设置镜像sample1:v2,为容器sampel2设置镜像sample2:v2
$   oc set image dc/sample sample1=sample1:v2 sample2=sample2:v2
  1. 为sample dc中的容器app设置镜像为imagestream tag sample/ruby:2.3
$   oc set image dc/sample app=sample/ruby:2.3 --source=imagestreamtag
  1. 为所有dc中的容器sample设置镜像为sample:v2
$   oc set image dc sample=sample:v2 --all

设置BuildConfig的拉取/推送镜像、拉取代码的密钥 oc set build-secret

  1. 设置samplebuild bc的拉取镜像的密钥dockerhubsecret
$  oc set build-secret --pull bc/samplebuild dockerhubsecret
  1. 设置samplebuild bc的推送镜像的密钥dockerhubsecret
$  oc set build-secret --push --pull bc/samplebuild dockerhubsecret
  1. 设置samplebuild bc的拉取代码的密钥githubsecret
$  oc set build-secret --source  bc/samplebuild  githubsecret
  1. 删除sample bc设置的推送镜像密钥
$   oc set build-secret --push --remove bc/sample

设置触发器 oc set triggers

  1. 列出sample dc当前的触发器
$ oc set triggers dc/sample
  1. 关闭sample dc所有的自动触发器
$ oc set triggers dc/sample --manual
  1. 开启sample dc所有的自动触发器
$ oc set triggers dc/sample --auto
  1. 更新sample bc的github触发器的密钥值
$ oc set triggers bc/sample --from-github
  1. 删除sample bc的所有触发器
$   oc set triggers bc/sample --remove-all
  1. 删除sample dc的ConfigChange触发器
$ oc set triggers dc/sample --from-config --remove
  1. 更新sample bc的ImageStreamTag触发器的镜像Tag为test/sample:latest
$  oc set triggers bc/sample --from-image=test/sample:latest
  1. 更新sample dc容器sample的ImageStreamTag触发器的镜像Tag为test/sample:latest
$  oc set triggers dc/sample --from-image=test/sample:latest -c sample

设置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
  1. 设置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"
  1. 设置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执行代码
  1. 删除samplebuild bc的post-commit
$   oc set build-hook bc/samplebuild --post-commit --remove

设置Route的后端服务oc set route-backends

  1. 列出sample route的后端服务
$ oc set route-backends sample
  1. 设置sample route的后端服务为两个并且流量比为1:9,samplev1(10%),samplev2(90%)
$ oc set route-backends sample samplev1=1 samplev2=9
  1. 为sample route后端服务samplev1添加10%的流量
$ oc set route-backends sample --adjust samplev1=+10%
  1. 将sample route所有后端服务流量设为0,该route将无法对外提供服务
$ oc set route-backends sample --zero
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容