OpenShift中如何通过脚本获取Alertmanager的告警数据
一、为什么需要通过脚本获取告警信息 二、Alertmanager的告警信息 三、amtool工具获取告警信息 12# oc exec -it alertmanager-main-0 -c alertmanager -n openshift-monitoring -- amtool alert query 'severity=critical' --alertmanager.url http://localhost:9093# oc exec -it alertmanager-main-0 -c alertmanager -n openshift-monitoring -- amtool alert query 'severity=critical' --alertmanager.url http://localhost:9093 -o extended -o:默认值为simple,输出格式,还可以是extended,json 四、amtool更多功能
OpenShift使用MetalLB,打开了Service通向外界的大门
#背景在K8S/OpenShift中,如果要向集群外部暴露应用的服务,目前使用的方法有:NodePort、HostPort、Route、LoadBalancer、HostNetwork。 Route:为最常用的方法,但是一般只支持7层负载(默认),使用一个外部LB来负载多个Route实例,对外的访问的IP为该LB的IP。 NodePort:在私有集群中也常用来暴露服务,但是它必须使用30000以上的端口,数量有限,不便于管理,而且对于一些特殊的服务,如DNS,必须使用小端口号,那么使用NodePort则无法满足。 HostNetwork:对于集群中的一些特殊服务使用该方式,它将容器与宿主机的网络绑定,如OpenShift中的Router服务就是使用HostNetwork与Router节点绑定。它的缺点是pod必须与主机绑定,同时每个Node上只能运行一个Pod实例,因为端口无法被复用。 HostPort:与HostNetwork类似,将Pod指定的端口与Node对应的端口绑定。 LoadBalancer:一般只在公有云平台使用,可以使Service获得与主机同一平面...
OpenShift制作NginxLB-Operator实战
背景近期需要在OpenShift集群中部署Nginx服务做为负载均衡器,负载集群外部服务,如NTP、DNS、项目App等。因为不同的服务的配置都是不一样的,不仅后台服务的IP不一样,而且使用的协议也不一样,HTTP/TCP/UDP都有可能,如果按照传统的方式来实施的话,每一个应用单独定义Nginx配置,分别部署,每增加一个新的应用被负载都需要做一次复杂的过程,那么有没有办法能够让这过程变得简单呢,甚至能够自动化处理,我们只需要提供最简单的信息?下面我们来分析下常用的几种方法。 打包方案选择1. Template对于OpenShift熟悉的朋友,会马上想到使用Template模板来实现。Template模板是OpenShift特有的应用打包方式,它描述了一组对象,同时对这些对象的配置可以进行参数化处理,生成OpenShift 容器平台创建的对象列表。在模板中可以设置所有在项目中有权限创建的任何资源。 不足之处: OpenShift特有,如果是使用OpenShift容器平台的话,这个不足可忽略。 无法保证线上资源状态始终与参数设定的结果一致,如手动增加rc的副本...
OpenShift存储管理方案——Rook
存储的重要意义存储资源是容器云平台中的一个核心基础设施,为不同的应用服务提供可靠的持久化服务。大家都知道,容器运行过程中产生的数据是临时数据,并不可靠,一旦容器挂了,这些数据都会丢失。所以对数据可靠性有要求的应用就必须使用存储资源。存储的方案有很多种,常用的有本地盘存储、NFS、Ceph、Gluster FS等等。其中Ceph是一个开源的分布式文件系统,同时支持对象存储、块存储、文件存储,为云计算平台提供了最全面的存储方案。它以可靠、高性能等特性得到了很多企业的认可,并使用它来作为生产环境的存储。但是运维Ceph存储集群是一件较复杂工作,通过Rook项目,我们可以非常方便简单地实施Ceph存储方案,并且已有企业使用Rook来运维生产级别的存储方案。 Rook:CNCF云原生存储项目Rook于2018年1月加入了CNCF,成为了CNCF第15个项目,同时它也是CNCF首个云原生存储项目。Rook并不是自己开发一套存储方案,而是将现有的分布式存储系统云原生化,让它们能够实现自我管理,自我扩展,自我修复。 它使存储管理员的任务自动化:部署,引导,配置,配置,扩展,升级,迁移,灾难恢复...
OpenShift容器中读取Project信息
背景在日常运维管理中,经常需要获取OpenShift集群资源的信息,甚至创建、编辑或删除资源。我们都很清楚,使用oc命令就能够非常方便地完成这些操作。但是有时,我们希望通过调用接口来实现,以便于与其它组件或者应用进行集成。那么我们该如何做呢?本篇就以读取Project信息为例,展示如何通过HTTP请求操作OpenShift的资源。 操作 首先需要创建具有读取Project信息权限的clusterrole project_view 12345678910111213$ cat <<EOF | oc create -f -apiVersion: authorization.openshift.io/v1kind: ClusterRolemetadata: name: project_viewrules:- apiGroups: - project.openshift.io resources: - projects verbs: - getEOF 为需要调用的应用POD添加获取Project信息的权限 1$ oc adm policy add-clus...
OpenShift容器云平台建设之部署前准备
在企业级部署OpenShift前,需要先考虑以下几个问题: 使用的主机架构是什么?IBM Power还是x86。 集群多大的容量,运行多少个Pod? Limit Type 3.7 Limit 3.9 Limit 3.10 Limit 3.11 Limit 节点数 [1] 2,000 2,000 2,000 2,000 pod数 [2] 120,000 120,000 150,000 150,000 每台节点支持的pod数 250 250 250 250 每核支持的pod数 默认为10. 最大值为主机支持的pod数 默认为10. 最大值为主机支持的pod数 无默认值. 最大值为主机支持的pod数 无默认值. 最大值为主机支持的pod数 namespaces数量 10,000 10,000 10,000 10,000 Pipeline构建策略数量 N/A 10,000 (默认pod内存为512Mi) 10,000 (默认pod内存为512Mi) 10,000 (默认pod内存为512Mi) 每个namespace下创建的pod数...
OpenShift应用补丁检查与升级
OpenShift版本补丁查看:https://docs.openshift.com/container-platform/3.11/release_notes/ocp_3_11_release_notes.html 自动查看新增的补丁版本脚本 # -*- coding: utf-8 -*- """ ------------------------------------------------- File Name: get_update_v3.11 ------------------------------------------------- """ last_index="RHSA-2020:2992" last_flag = False import requests from pyquery import PyQuery url="https://docs.openshift.com/container-platform/3.11/release_note...
OpenShift强大的oc-set命令详解
OpenShift的client工具oc功能非常强大,几乎能实现所有的操作,它的每一个子命令都能实现非常多的功能。其中有个容易被忽视却很强大的子命令oc set可以实现对资源很多额外的配置,包括有环境变量、资源限制、持久化卷挂载、健康检查等等。下面是oc set的帮助详情。 1234567891011121314151617181920212223242526[root@master ~]# oc setConfigure application resourcesUsage: 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 o...
OpenShift支持Calico-BGP-路由反射(RR)模式
一、Calico 是什么calico 是容器网络的一种解决方案,也是当前最流行的方案之一。和其他虚拟网络最大的不同是,它没有采用 overlay 网络做报文的转发,提供了纯 3 层的网络模型。三层通信模型表示每个容器都通过 IP 直接通信,中间通过路由转发找到对方。在这个过程中,容器所在的节点类似于传统的路由器,提供了路由查找的功能。 要想路由工作能够正常,每个虚拟路由器(容器所在的主机节点)必须有某种方法知道整个集群的路由信息,calico 采用的是BGP 路由协议,全称是 Border Gateway Protocol。 除了能用于 docker 这样的容器外,它还能集成到容器集群平台 OpenShift/kubernetes、公有云平台 AWS、GCE 等, 而且也能很容易地集成到 openstack 等 Iaas 平台。 二、Calico网络方式2.1 IPIP模式从字面来理解,就是把一个IP数据包又套在一个IP包里,即把 IP 层封装到 IP 层的一个 tunnel,看起来似乎是浪费,实则不然。它的作用其实基本上就相当于一个基于IP层的网桥!一般来说,普通的...
OpenShift数据库挂了问题解决
每个计算节点都无法启动,报错信息为: 1234567891011Jan 05 00:05:10 node1.example.com origin-node[4307]: I0105 00:05:10.895622 4307 feature_gate.go:226] feature gates: &{{} map[RotateKubeletServerCertificate:true RotateKubeletClientCertificate:true]}Jan 05 00:05:10 node1.example.com origin-node[4307]: I0105 00:05:10.902964 4307 mount_linux.go:211] Detected OS with systemdJan 05 00:05:10 node1.example.com origin-node[4307]: I0105 00:05:10.908967 4307 server.go:383] Version: v1.10....

