很多OpenShift的用户都非常喜欢其自带的Route功能,Route为外部用户提供了访问Pod的负载均衡功能,它要比Kubernetes缺省提供的Ingress功能强大很多。有关介绍可参见《OpenShift 4之Route与Ingress》。
OpenShift的Route是通过Pod运行的,因此如果不指定运行环境,Route的Pod可能会运行在Worker甚至Masrer类型的节点上。

首先可以执行命令可以查看Route运行在哪些OpenShift集群节点上:

$ oc get pod -n openshift-ingress -o wide
NAME                              READY     STATUS    RESTARTS   AGE       IP           NODE                                              NOMINATED NODE
router-default-5fc6c9ffbb-9x9l8   1/1       Running   0          15h       10.131.0.7   ip-10-0-135-227.ap-southeast-1.compute.internal   <none>
router-default-5fc6c9ffbb-p5x6d   1/1       Running   0          15h       10.131.0.8   ip-10-0-135-227.ap-southeast-1.compute.internal   <none>

然后可以进一步确认这些节点在集群中的角色,例如以下是"worker"类型节点。

$ oc get node ip-10-0-135-227.ap-southeast-1.compute.internal
NAME                                              STATUS    ROLES     AGE       VERSION
ip-10-0-135-227.ap-southeast-1.compute.internal   Ready     worker    15h       v1.12.4+4dd65df23d

查看名为default的ingresscontroller配置,其中包括决定route运行在哪些节点的nodeSelector信息(以下是“node-role.kubernetes.io/worker”)。

$ oc get ingresscontroller default -n openshift-ingress-operator -o yaml
apiVersion: operator.openshift.io/v1
kind: IngressController
metadata:creationTimestamp: "2019-11-22T16:16:15Z"finalizers:- ingresscontroller.operator.openshift.io/finalizer-ingresscontrollergeneration: 2name: defaultnamespace: openshift-ingress-operatorresourceVersion: "23004"selfLink: /apis/operator.openshift.io/v1/namespaces/openshift-ingress-operator/ingresscontrollers/defaultuid: 689bc509-0d43-11ea-aca5-525400baad9b
spec:defaultCertificateSecret: nullhighAvailability: nullingressDomain: nullnamespaceSelector: nullnodePlacement:nodeSelector:matchLabels:node-role.kubernetes.io/worker: ""replicas: 2routeSelector: nullunsupportedExtensions: null

编辑default的ingresscontroller,将运行节点的标签改为“node-role.kubernetes.io/infra”。

$ oc get ingresscontroller default -n openshift-ingress-operator -o yaml

将节点改成“node-role.kubernetes.io/infra”。

  nodePlacement:nodeSelector:matchLabels:node-role.kubernetes.io/infra: ""

可以查看OpenShift对router pod的调整,它会通过混动升级的方式先停掉运行在Worker节点的Pod,然后会在Infra节点上运行router的Pod。

$ oc get pod -n openshift-ingress -o wide
NAME                              READY     STATUS        RESTARTS   AGE       IP           NODE                                              NOMINATED NODE
router-default-5fc6c9ffbb-9x9l8   1/1       Running       0          15h       10.131.0.7   ip-10-0-131-124.ap-southeast-1.compute.internal   <none>
router-default-5fc6c9ffbb-p5x6d   0/1       Terminating   0          15h       10.131.0.8   ip-10-0-135-227.ap-southeast-1.compute.internal   <none>
。
。
。
router-default-5fc6c9ffbb-2jtrx   1/1       Running   0          70s       10.131.2.5   ip-10-0-142-239.ap-southeast-1.compute.internal   <none>
router-default-5fc6c9ffbb-jplph   1/1       Running   0          83s       10.128.4.6   ip-10-0-133-204.ap-southeast-1.compute.internal   <none>

最后可以确认运行router的节点是具备infra的角色节点:

oc get node ip-10-0-142-239.ap-southeast-1.compute.internal
NAME                                              STATUS    ROLES          AGE       VERSION
ip-10-0-142-239.ap-southeast-1.compute.internal   Ready     infra,worker   19m       v1.12.4+4dd65df23d

OpenShift 4 之让Route只运行在集群中Infra节点相关推荐

  1. K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路

    K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路 文章目录 K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路 1.Node节点资源不足可能会产生的故障 2.Node节点 ...

  2. OpenShift 4 - 用KubeletConfig和ContainerRuntimeConfig分别修改集群节点的Kubelet和cri-o的配置

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 文章目录 Kubelet.KubeletConfig和KubeletConfigCon ...

  3. Spark在不同集群中的运行架构

    Spark注重建立良好的生态系统,它不仅支持多种外部文件存储系统,提供了多种多样的集群运行模式.部署在单台机器上时,既可以用本地(Local)模式运行,也可以使用伪分布式模式来运行:当以分布式集群部署 ...

  4. 在多节点集群中运行Cassandra

    这篇文章收集了我在多节点中设置Apache Cassandra集群的步骤. 在设置集群时,我已经参考了Cassandra Wiki和Datastax文档. 详细介绍了以下过程,分享了我建立群集的经验. ...

  5. OpenShift 4 - 如何用Machine Config Operator修改集群节点CoreOS的配置

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 文章目录 OpenShift 4 和 RHCOS MachineConfig相关概念 ...

  6. OpenShift 4 - 利用 File Integrity Operator 实现对集群节点进行入侵检测

    <OpenShift / RHEL / DevSecOps 汇总目录> 说明:本文已经在OpenShift 4.9环境中验证 文章目录 File Integrity Operator 功能 ...

  7. 使用docker engine 运行时 集群部署 kubernetes v1.23

    硬件环境: 使用 VMware16 模拟3台服务器,建立1个control plane(master),2个work 节点的kubernetes集群 使用 Ubuntu server 20.04 TL ...

  8. 逃脱只会部署集群系列 —— Kubeadm部署v1.18.0与ETCD操作

    目录 一.Kubeadm部署K8s1.18.0版本 1. 安装要求 2.环境准备 3. docker安装[所有节点都需要安装] 4.docker配置cgroup驱动[所有节点] 5.镜像加速[所有节点 ...

  9. strom-1.1.0模拟单词统计功能,Spout编写,Bolt编写,TopologyDriver编写,本地模式运行,集群模式运行,集群模式下看输出结果

    统计文本中的单词出现的频率,其中文本内容如下: 创建项目 项目结构如下: 创建pom.xml,代码如下: <?xml version="1.0" encoding=" ...

最新文章

  1. Linux内核模块编程入门
  2. 2021年春季学期-信号与系统-第十五次作业参考答案-第五小题参考答案
  3. DevOps滚动部署
  4. vue中create 什么触发_vue中eventbus被多次触发(vue中使用eventbus踩过的坑)
  5. Nginx 负载均衡器(1+2)
  6. [scala-spark]1. Spark vs Hadoop 及 基础
  7. 状态模式和策略模式的区别
  8. C ++中的std :: binary_search()
  9. 编码-京东实习笔试编程题-生日礼物-动态规划
  10. 计算机重启是什么原因,电脑自动重启,该怎么办,到底是什么原因,我来详细说明?...
  11. 美国IARPA发起人脸识别算法融合大奖赛
  12. 全方位测评Hive、SparkSQL、Presto 等七个大数据查询引擎,最快的竟是……| 程序员硬核测评...
  13. 大数据时代 银行信息安全如何防护?
  14. mysql public owner_OWNER支持配置文件目录的继承
  15. 香港城门隧道翻车意外酿一死16伤
  16. 如何用 Python 识别车牌?
  17. 单片机编程软件很简单(12),Keil单片机编程软件配置操作
  18. 京东商城API 商品详情接口
  19. vdi转vmdk VirtualBox与VMware硬盘格式转换及使用方法
  20. 飞控之扩展卡尔曼滤波(附matlab和C代码)

热门文章

  1. Dubbo的异常处理
  2. 新公司(企业)在各银行开基本户所需资料、流程及费用
  3. I@de6ced(downloaded)
  4. ERR_HTTP2_PROTOCOL_ERROR分析
  5. 华为RS4 IP编址
  6. Kotlin Jetpack Compose remember 给Icon添加透明度 remember 添加参数来记录其位置
  7. 《C语言陷阱和缺陷》笔记
  8. 【毕业设计】深度学习+python+opencv实现动物识别 - 图像识别
  9. PL/SQL到期后的解决办法
  10. 分治问题CodeForces768B大数