Openshift模板之项目创建模板(资源限制)
Openshift创建project时,可以按照设定的模板来创建,这就省去了很多初始化的工作。###文件内容(template.yaml)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112apiVersion: v1kind: Templatemetadata: creationTimestamp: null name: project-requestobjects:- apiVersion: v1 kind: Project metadata: annotations: openshift.io/description: ${PROJECT_DESC ...
Openshift生产环境部署配置事项
1. 主机配置推荐
master 16核 32GB 网卡带宽不低于1Gb。CPU x86_64架构,核数和主机数线性递增,每增加一台主机增加0.1核。5台主机4.5核,总的核数为4+0.1 * 主机数内存与主机数线性递增,每增一台主机增加200M内存,5台8G,总的内存数为7+0.2 * 主机数
node 40核 256GB 网卡带宽不低于1Gb根据应用场景估算
2. 磁盘目录挂载
master磁盘格式:xfs ftype=1/ : 10GB/var/log :50GB/var/lib/docker:100GB 做raid高可用/var/lib/etcd [ssd]:20GB 做raid高可用/var :50GB 可根据实际进行调整,主要emptyDir的存储在/var/lib/origin目录下
node磁盘格式:xfs ftype=1/ : 10GB/var/log :50GB/var ...
Openshift的网络策略networkpolicy
开启networkpolicy
创建新集群时,在ansible的hosts的参数列表中添加os_sdn_network_plugin_name配置12[OSEv3:vars]os_sdn_network_plugin_name='redhat/openshift-ovs-networkpolicy
如果已存在的集群,切换网络策略,请参考Openshift网络插件动态切换
ovs-networkpolicy网络策略下,pod也支持qos网络流量控制。详情请阅读:Openshift Network QoS——Pod网络控制
说明:在Openshift容器平台只支持部分k8s networkpolicy v1版本特性,所以egress协议类型,IPBlock和podSelector与namespaceSelector的组合都不支持。
NetworkPolicy配置规则样例:
12345678910111213141516171819202122apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: t ...
Openshift私有仓库爆了,怎么办??!!
背景像大家担心的那样,Openshift私有仓库磁盘爆了,使用率100%!!!使用oc adm prune来作对openshift集群的清理,你敢吗?会不会把需要的镜像也一并删了呢,要是如此,就只能像DBA一样走人了。今天就来探讨下oc adm prune的用法。
先给出答案如你所料,我们最终的清理镜像的办法是oc adm prune images
12oc login -u admin -p adminoc adm prune images --keep-younger-than=400m --confirm
注意以上oc adm prune images命令只能在普通用户下执行,无法在system:admin用户下执行,所以必须先登录普通用户,同时用户拥有system:image-pruner权限。
精减镜像命令oc adm prune images的用法为了让镜像不占用过多的磁盘空间,需要对它全精减。很多时候,比如重复地构建镜像,会留下很多不必要的镜像层,而这些镜像层会占用非常多的空间。
1oc adm prune images [<options>]
option ...
Openshift管理project【译自官方文档】
概述在OpenShift容器平台中,项目用于对相关对象进行分组和隔离。作为管理员,您可以授予开发人员对某些项目的访问权限,允许他们创建自己的项目,并授予他们在各个项目中的管理权限。
创建一个新的Project可以允许开发人员创建自己的项目。开发人员可以通过web控制台或者oc new-project命令来创建新的project。
1$ oc new-project test-project
预定义projectAPI服务器根据master-config.yaml文件的projectRequestTemplate参数标识的模板自动配置新的项目。如果未定义该参数,API服务器将创建一个默认模板,该模板使用请求的名称创建一个项目,并赋予创建该项目的用户该项目的“admin”角色。
如何创建自定义的project模板呢?
导出当前默认的模板1$ oc adm create-bootstrap-project-template -o yaml > template.yaml
使用文本编辑工具编辑template.yaml文件,对默认的配置进行更新
导入更改后的模板1$ oc create ...
Openshift结合IaaS的LB与Nginx实现高可用可伸缩外部负载均衡器
背景
Openshift在集群部署时需要额外提供一个负载均衡器,该负载均衡器对master api及router haproxy中的80与443服务进行负载,实现高可用。
如果在IaaS上部署Openshift集群的话,我们很自然地会使用IaaS的LB服务,直接对LB作TCP端口负载就解决问题了,既实现了需要的负载均衡,而且还有健康检查,负载高可用,非常方便。
但是我们的Openshift集群并不是部署在IaaS上,而是额外部署。IaaS上的LB无法直接将集群中的服务器作为监听器的后端进行负载,这时我们就需要在Openshift集群下额外独立部署负载均衡器。考虑到保证负载均衡器的高可用性,及监控等,这会是一个比较复杂的过程。
那么我们是否可以结合IaaS上的LB现有的机制,制定一套既方便部署,又高可用的方案呢?答案是肯定的。
该篇就是介绍如何结合IaaS的LB与代理应用Nginx实现Openshift高可用的外部负载均衡
原理
负载均衡器应用,首先大家想到的最多的两款应用是:Nginx与Haproxy,我们选用了Nginx。
将IaaS的LB与Nginx结合的思路也很简单。在IaaS ...
Openshift网络插件动态切换
Openshift 3.11版本Openshift SDN网络插件ovs-subnet 与 ovs-multitenant切换
更改节点上的networkPluginName的配置
master节点:/etc/origin/master/master-config.yaml
node节点:/etc/origin/node/node-config.yaml
将networkPluginName中的redhat/openshift-ovs-subnet换成redhat/openshift-ovs-multitenant,或者反过来。12$ ansible all -m shell -a 'sed -i "s/openshift-ovs-subnet/openshift-ovs-multitenant/g" /etc/origin/node/node-config.yaml'$ ansible masters -m shell -a 'sed -i "s/openshift-ovs-subnet/openshift-ovs ...
Openshift自定义Router成倍提升集群性能
为什么要自定义Router
Openshift的Router节点其实就是一个Haproxy容器应用,这个已经不是什么秘密了。我们平常使用时,不需要关心Haproxy的配置,因为它的默认配置完全满足绝大多数情况的需求。
但是它的默认配置并没有把最大的性能发挥出来,这时就需要我们对Haproxy的配置进行自定义了。
如果你需要实现一些新的功能,比如说将Mysql通过Router对外提供服务等
怎样自定义Router
Router Pod根据haproxy-config模板创建haproxy.conf配置文件,默认文件为/var/lib/haproxy/conf/haproxy-config.template
Router Haproxy镜像启动时会根据环境变量TEMPLATE_FILE来选择最终使用的模板文件
向Router Pod中放入自定义的模板文件,并将它的路径传给环境变量TEMPLATE_FILE
模板文件中的相关函数
函数
说明
processEndpointsForAlias(alias ServiceAliasConfig, svc ServiceUnit, ...
Openshift部署zalenium(容器化的selenium)及Python自动测试
什么是zaleniumzalenium是一个Selenium Grid扩展,用Docker容器动态扩展你的本地网格。它使用docker-selenium在本地运行Firefox和Chrome中的测试。官网地址 zalenium
Openshift上部署zalenium
创建zalenium项目
1oc new-project zalenium --display-name="自动测试Selenium Grid"
创建Service Account
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455# 创建ClusterRole# oc create -f zalenium-role.json{ "kind": "ClusterRole", "apiVersion": "v1", "metadat ...
Openshift部署测试环境oc-cluster-up
1oc cluster up --base-dir=/root/openshift --public-hostname=master.douhua.com