OpenShift-Route会话保持与负载均衡策略
Route会话保持OpenShift Router是基于Haproxy反向代理实现的,客户端请求与后端应用POD通过cookie来实现会话保持。 默认是开启会话保持的,基于cookie的会话保持。 如果设置haproxy.router.openshift.io/disable_cookies为True,将会禁用基于cookie的会话保持,而使用balance的负载策略。 此过程分为两个阶段:第一次请求阶段、再次发起请求阶段 第一次请求阶段客户端发起第一次请求时,Router会给返回的数据中添加一条指定的cookie。 客户端请求到达Router节点。 Router节点通过默认的负载均衡策略选择后端应用POD。 后端应用POD返回数据到Router节点。 Router根据后端应用POD,给返回的数据包set-cookie: cookiename[HASH值]=cookievalue(HASH值),有效期为SESSION(浏览器客户端关闭前有效)。 再次发起请求阶段客户端再次发起请求时,会带上第一次Router设置的cookie,Router根据该cookie值选择...
OpenShift-Route支持TCP负载均衡改造与使用
Route作为TCP负载均衡器的部署 获取当前Route的haproxy-template配置 12345# oc project default# oc get podNAME READY STATUS RESTARTS AGErouter-16-5rv4q 2/2 Running 2 18h# oc rsh router-16-5rv4q cat haproxy-config.template > haproxy-config.template 编辑导出的haproxy-config.template文件在内容{{- end }}{{/*end tls==passthrough*/}}下一行,添加以下内容: 1234567891011{{/*TCP support*/}}{{- if eq "tcp" (index...
OpenShift-Service的域名
正常情况下Service的域名格式为:service-name.project-name.svc.cluster.local对应的IP是Service Cluster IP 设置Service的clusterIP=NoneService的域名格式为:service-name.project-name.svc.cluster.local对应的IP是后台对应的Pod的容器的IP同时后台对应的Pod都有DNS记录,格式为Pod-name.service-name.project-name.svc.cluster.local
OpenShift-云原生容器应用设计原则
引自:容器化应用的设计原则来源自RedHat云原生容器应用设计原则白皮书 本文来自于Red Hat咨询顾问Bilgin Ibryam所编写的一篇白皮书,名为《PRINCIPLES OF CONTAINER-BASED APPLICATION DESIGN》。这篇文章在作者的Blog上发表后,作者的twitter被Kubernetes官方twitter转发。白皮书在Red Hat官网的下载地址:https://www.redhat.com/en/resources/cloud-native-container-design-whitepaper 文本是对这篇文章的学习和整理。 先回顾经典的软件设计原则: 保持简单,愚蠢(KISS) 不要重复自己(DRY) 你不会需要它 (YAGNI) 关注点分离(SoC) Single responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion (SOLID) 然后是Red Hat的云原生容器设计原则...
OpenShift-如何设置使用Prometheus来监控Router
OpenShift集群中的Router服务作为几乎所有南北流量的入口非常重要,对它的监控有很大的意义,既能够查看流量的变化,及时发现业务的变化,也可以发现异常请求及时发现问题。 红帽对于Router服务其实已经开启了监控指标的服务,但是默认并没有与Prometheus服务对接,需要手动对接,具体对接的操作如下。 获取Router应用的访问用户名与密码 1234$ oc set env dc/router -n default --list | grep STATSSTATS_PASSWORD=Oby3Y2FXs5STATS_PORT=1936STATS_USERNAME=admin 在prometheus项目下创建访问Router指标的密钥 1$ oc create secret generic router-auth --from-literal=user=admin --from-literal=password=Oby3Y2FXs5 -n openshift-monitoring 在openshift-monitoring项目下创建ServiceMonitor ...
OpenShift-集群为项目提供专属节点
背景介绍在生产实践中,某些系统因一些特殊的要求,需要独占节点,即专属节点:具有特殊要求的应用POD必须运行在这些专属节点上;同时这些节点不为其它应用服务。本文将提供一种具体的配置策略,以满足这种特殊的调度需求。该策略主要使用到两种工具: 节点标签实现应用与节点的绑定 污点配置实现其它应用不会被调度到该节点。 设置步骤 为专属节点设置特定标签LABEL:dedicated=sys0,及设置污点 12$ oc label node node-10 dedicated=sys0$ oc adm taint nodes node-10 dedicated=sys0:NoSchedule 在使用专属节点的应用编排中绑定的Node 123456789101112spec: replicas: 1 template: metadata: name: nginx labels: app: nginx spec: nodeSelector: dedicated: "sys0" ...
OpenShift上使用NFS作为共享存储的线上问题
NFS exports文件配置格式<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)] a. 输出目录:输出目录是指NFS系统中需要共享给客户机使用的目录; b. 客户端:客户端是指网络中可以访问这个NFS输出目录的计算机客户端常用的指定方式 指定ip地址的主机:192.168.0.200指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0指定域名的主机:david.bsmart.cn指定域中的所有主机:.bsmart.cn所有主机: c. 选项:选项用来设置输出目录的访问权限、用户映射等。 NFS主要有3类选项: 访问权限选项 设置输出目录只读:ro设置输出目录读写:rw 用户映射选项all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);no_all_squash:与all_squash取反(默认设置);root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);...
OpenShift中etcd集群的某个etcd服务文件损坏,导致节点故障,恢复过程
问题etcd集群中某个etcd出现故障,使用docker ps -a | grep etcd | grep -v POD查看etcd节点,发现它异常退出。 123$ docker logs -f <etcd-container-id>....etcdserver : open wal error: wal: file not found 恢复步骤大方向步骤:一、将问题etcd节点从etcd集群剥离;二、将恢复的新的etcd节点添加到etcd集群。具体步骤如下: 查看etcd状态 1234$ etcdctl2 cluster-health$ ## 获取问题节点的member ID$ etcdctl2 member remove <member ID>$ ## 将问题etcd服务从etcd集群中删除 停止问题节点上的etcd服务 12$ mkdir -p /etc/origin/node/pods-stopped$ mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/ 删除问题节点上的...
OpenShift-通过Operator-SDK制作Operator
制作Operator过程 下载安装operator-sdk 创建github仓库 operator-sdk创建应用 12345$ operator-sdk new memcached-go-operator --repo=github.com/example-inc/memcached-operator$ # or$ operator-sdk new memcached-ansible-operator --api-version=fcloudy.com/v1alpha1 --kind=Memcached --type=ansible$ # or$ operator-sdk new memcached-helm-operator --api-version=fcloudy.com/v1alpha1 --kind=Memcached --type=helm operator-sdk new默认使用的type为go,必须在$GOPATH目录下创建项目。type为go时项目的目录结构如下:项目的目录结构 type的可选值还可以为:ansible与helm,如果是这两个,则还可以带参数...
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更多功能



