kubernetes(k8s) ingress及ingress docker-controller

【K8s】服务暴露插件ingress-controller部署指南(一) 部署环境:k8s_v1.20.2和ingress-nginx-controller-v1.0.0 目录 一、了解ingress功能及原理 二、kubernetes发布服务的服务类型 三、准备容器化部署的yaml文件及镜像 准备yaml文件 准备镜像 四、部署ingress-nginx-controller 五、测试 六、参考 一、了解ingress功能及原理 虽然service或者pod都可以直接通过NodePort将端口直接映射到Node节点,但是大量pod使用映射方... 阅读详情

kubernetes(k8s) ingress及ingress docker-controller

什么是Ingress? --- HTTP 7层路由机制。将集群外部的HTTP和HTTPS路由暴露给集群中的服务, 流量路由由Ingress资源上定义的规则控制

    internet
        |
   [ Ingress ]
   --|-----|--
   [ Services ]

  

利用Ingress实现对外部访问(以nginx为例)

1. 创建后端pod及service, 这里的service仅起到识别后端pod组的功能,不对外提供服务

 

使用deploy创建service和pod,下面是deploy yaml文件内容:

apiVersion: v1
kind: Service
metadata:
  name: svc-app
  namespace: develop     # 这里是service需要工作的namespace
spec:
   selector:
       app: nginx-test
       release: v0.2
   ports:
   - name: http
     targetPort: 80
     port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: deploy-demo
    namespace: develop    # 这里是自定义的后端pod需要工作的namespace
spec:
    replicas: 3
    selector:
        matchLabels:
            app: nginx-test
            release: v0.2
    template:
        metadata:
            labels:
                app: nginx-test
                release: v0.2
        spec:
            containers:
            - name: deploy-ngx
              image: nginx
              ports:
              - name: http
                containerPort: 80  # pod中的容器服务工作端口

执行命令创建后端服务:
# kubectl apply -f deploy-demo.yaml
 

复制代码

 2. 创建Ingress-nginx Controller服务

复制代码

# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
这里我使用的是通用的安装方法,如果需要定制,可以参考: https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md

复制代码

 3. 自定义Ingress策略(通过Ingress发布app)

复制代码

Ingress 策略yaml文件:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: ingress-app
    namespace: develop  # 需要代理的后端Pod工作的namespace
    annotations:
        kubernetes.io/ingress.class: "nginx"  # 这里必须要使用annotations说明Ingress的类型使用的是nginx
spec:
    rules:
    - host: myapp.k8s.com     # 这里是用虚拟主机来访问(自己本地测试需要修改主机/etc/hosts的域名解析,把这个host添加进去),也可以使用path解析
      http:
          paths:
          - path:
            backend:
                serviceName: svc-app  # 后端Pod的service name,通过service来生成nginx的upstrem
                servicePort: 80

执行以下命令创建:
# kubectl apply -f ingress-app.yaml
本机host文件添加域名解析

 

复制代码

 4.  创建service-nodeport服务,这一步很重要,目的是为了ingress controller能接入外部流量

复制代码

# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/baremetal/service-nodeport.yaml  #下载源配置文件
修改文件内容如下

复制代码

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
spec:
   selector:  # 这里需要注意selector标签必须和Ingress controller中的label匹配
       app.kubernetes.io/name: ingress-nginx
       app.kubernetes.io/part-of: ingress-nginx
   type: NodePort
   ports:
   - name: http
     port: 80
     targetPort: 80
     protocol: TCP
     nodePort: 30080  # 从pod映射到Node上的服务端口
   - name: https
     port: 443
     targetPort: 443
     protocol: TCP
     nodePort: 30443

复制代码

 

复制代码

 5. 然后就可以本机浏览器访问 myapp.k8s.com

由于我是用的AWS EC2,没有持有myapp.k8s.com这个域名解析,使用的本地解析,所以只能在机器上使用curl命令测试,测试结果如下:

 

 HTTPS特别说明:

如果需要支持https访问,需要创建证书。以自建证书部署tomcat为例:

1. 沿用之前的Ingress Controller和service-nodeport不变

2. 创建后端tomcat pod及service:

复制代码

root@k8s-master:/home/ubuntu/manifests/basic/ingress# cat deploy-tomcat.yaml
apiVersion: v1
kind: Service
metadata:
  name: tomcat-svc
  namespace: develop
spec:
   selector:
       app: tomcat
       release: v1
   ports:
   - name: https
     targetPort: 8080
     port: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: tomcat-deploy
    namespace: develop
spec:
    replicas: 2
    selector:
        matchLabels:
            app: tomcat
            release: v1
    template:
        metadata:
            labels:
                app: tomcat
                release: v1
        spec:
            containers:
            - name: tomcat
              image: tomcat
              ports:
              - name: https
                containerPort: 8080  # tomcat工作端口

# kubectl apply -f deploy-tomcat.yaml
 

复制代码

 3. 自建SSL证书并通过ingress完成tomcat对外暴露:

复制代码

# openssl genrsa -out tls.key 2048
# openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=Chengdu/L=Chengdu/O=DevOps/CN=tomcat.k8s.com

# kubectl create secret tls tomcat-ingress-secret --cert=tls.crt --key=tls.key

  

 

修改Ingress yaml策略:
root@k8s-master:/home/ubuntu/manifests/basic/ingress# cat ingress-tomcat.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: ingress-tomcat
    namespace: develop 
    annotations:
        kubernetes.io/ingress.class: "nginx"  # 这里必须要使用annotations说明Ingress的类型使用的是nginx
spec:
    tls:  # 必须添加证书获取方式这一块
    - hosts:
      - tomcat.k8s.com
      secretName: tomcat-ingress-secret
    rules:
    - host: tomcat.k8s.com 
      http:
          paths:
          - path:
            backend:
                serviceName: tomcat-svc  # tomcat后端pod service name
                servicePort: 443

执行以下命令创建:
# kubectl apply -f ingress-app.yaml

然后就可以通过浏览器访问 https://tomcat.k8s.com:30443   # 由于是自建证书,浏览器不信任,但是依旧可以通过https方式打开
使用curl命令访问需要 curl --insecure https://tomcat.k8s.com:30443  # 自建证书浏览器不识别可能依旧是不安全的,所以不再校验。 --insecure表示忽略校验步骤  -k和--insecure 等价
 

 

复制代码

 

一文搞定Kubernetes v1.27.4集群环境搭建 CSR是Certificate Signing Request的英文缩写,即证书签名请求文件,是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。CSR是以-----BEGIN CERTIFICATE REQUEST-----开头,-----END CERTIFICATE REQUEST-----为结尾的base64格式的编码。 阅读详情

相关推荐

kubeadm部署安装k8s集群

Kubernetes组件介绍 k8s master包含的三大组件 kube-apiserver,是整个 Kubernetes 集群的“灵魂”,是信息的汇聚中枢,提供了所有内部和外部的 API 请求操作的唯一入口。同时也负责整个集群的认证、授权、访问控制、服务发现等能力。 Kube-Controller-Manager,负责维护整个 Kubernetes 集群的状态,比如多副本创建、滚动更新等。Kube-controller-manager 并不是一个单一组件,内部包含了一组资源控制器,在启动的时候,会通过

linxi7的博客 2942

【云原生 | Kubernetes 实战】19、K8s Ingress-Controller 高可用方案

K8s Ingress-Controller 高可用方案

GG Bond 的博客 2922

Silvaco Athena实战:从零搭建MOSFET工艺仿真流程(附mos1ex03完整代码解析)

本文详细介绍了使用Silvaco Athena从零搭建MOSFET工艺仿真的全流程,包括环境配置、核心工艺步骤、器件成型及参数提取等关键环节。通过mos1ex03案例的完整代码解析,帮助读者掌握网格划分、氧化层生长、离子注入等实战技巧,提升半导体工艺仿真能力。

weixin_42648844的博客 406

k8s ingress-controller处理流程及原理

k8s之ingress-controller处理流程及原理

风向决定发型丶的博客 7517

Mamba-ST实战:用状态空间模型实现艺术风格迁移的5个关键步骤

本文详细介绍了如何使用Mamba-ST状态空间模型实现高效的艺术风格迁移,涵盖环境配置、数据预处理、模型架构、训练策略和推理优化等5个关键步骤。Mamba-ST基于SSM(状态空间模型)构建,在保持生成质量的同时显著降低计算复杂度,为风格迁移领域提供了新的解决方案。

weixin_29163581的博客 355

鱼眼双目测距实战:从OpenCV标定到SGBM匹配的完整流程解析

本文详细解析了鱼眼双目测距的完整流程,从OpenCV标定到SGBM匹配,涵盖标定、校正、匹配和测距四个关键阶段。通过实战经验分享,帮助开发者解决鱼眼镜头强畸变带来的测距挑战,提升测距精度至5%以内。特别适合机器人导航、自动驾驶和VR领域的开发者参考。

weixin_27298377的博客 124

k8s部署IngressController

k8s中ingress的基本用法

教Linux的李老师 5304

Win10局域网内文件共享+远程桌面控制保姆级教程(含常见问题解决)

本文提供Win10局域网内文件共享和远程桌面控制的详细教程,包括环境检查、共享文件夹设置、远程桌面连接步骤及常见问题解决方案。通过内置功能实现高效办公协作,提升多设备协同工作效率,特别适合需要频繁传输文件或远程控制场景的专业人士。

rose2的博客 779

k8s--基础--29.2--ingress--安装Ingress Controller和配置Ingress

从上面可以看出 我们已经把 ingress-myapp.yaml文件里面的配置,同步到 ingress-controller中,也就是nginx的配置文件中。通过ingress-controller对外提供服务,现在还需要手动给ingress-controller建立一个service,接收集群外部流量。这里调度器是正常工作的,因为虽然我们没有配置后端服务,所以这里显示的是默认的后端服务。这里就是验证 ingress-controller 本质 是一个nginx。下面的ip是k8s的master节点ip。

zhou920786312的博客 3561

基于Simulink的双PMSM差速驱动转矩同步控制建模示例

本文详细介绍了基于Simulink的双永磁同步电机(PMSM)差速驱动转矩同步控制建模方法。针对AGV/叉车等双电机独立驱动系统的转矩不同步问题,提出主从式+交叉耦合控制策略,在Simulink中实现直线行驶、90°转弯和单轮打滑恢复三种工况的仿真验证。通过动力学建模、参数差异设置、同步误差定义及控制律设计,最终实现同步误差<3%、转弯半径跟踪误差<5%、打滑后100ms内恢复的性能指标。文章特别强调了实际工程中的参数标定、通信同步和故障处理要点,并提供了完整的Simulink建模步骤和工具箱使

xiaoheshang_123的博客 205

【异常】飞书OpenClaw机器人 HTTP 401: Invalid Authentication 报错排查与解决方案

HTTP 401 是HTTP协议标准定义的未授权(Unauthorized)状态码,核心含义为请求方身份认证无效,服务端拒绝执行本次请求。飞书开放平台服务端对自建机器人的全链路鉴权校验失败。无论是机器人接收飞书事件推送的上行请求,还是机器人主动调用飞书开放平台API的下行请求,只要身份凭证无效、鉴权逻辑校验不通过,飞书服务端就会返回该报错,并最终透传到飞书客户端会话窗口中。

奶爸的编程之路,也就一周冷个三天 3765

k8s安装ingress

版本介绍 组件 版本 k8s v1.18 ingress 0.30.0 1. 下载两个文件 https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/mandatory.yaml https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/baremetal/service-nodeport.yaml 2. 在k8

xgw的专栏 1932

图神经网络实战——利用节点回归预测网络流量

在机器学习中,回归指的是对连续值的预测。通常与分类形成鲜明对比,分类的目标是找到正确的类别(即离散值,而非连续值)。在图数据中,分类和回归分别对应于节点分类和节点回归。在本节中,我们将尝试预测每个节点的连续值,而非分类变量。

盼小辉丶的博客 1万+

Docker六脉神剑 (六) 1. Docker集群之Kubernetes(K8S) 了解k8s - 理论篇

到了k8s的文章了, 博主前面介绍了swarm集群, swarm集群本身相对来说比较简单、 轻量, 所以并没有重点介绍, 但是k8s不太一样, 这玩意还是比较复杂, 一两篇简单介绍不完, 所以博主这边得细说几篇, 最后也会做个实例, 方便大家参考。选择swarm还是k8s,两者有什么区别?背景不一样, k8s是谷歌, swarm是官网方案swarm轻量, 直接do...

博客简介 375

Python 爬虫实战:爬取豆瓣电影 Top250 完整数据

本文基于Python技术实现了豆瓣电影Top250榜单数据的合规爬取与分析。针对豆瓣电影页面的分页结构、反爬机制等特点,采用requests库获取数据,结合BeautifulSoup解析HTML节点,并通过正则表达式提取电影名称、评分、导演等核心字段。爬虫实现了随机User-Agent、请求间隔控制等反爬规避策略,严格遵守豆瓣社区使用规范。最终数据经清洗后存储为结构化Excel文件,并提供了数据可视化与增量更新方案。该方案为影视研究提供了可靠的数据获取方法,同时确保符合非商业使用、适度爬取等合规要求。

2503_91057718的博客 3460

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Kubernetes(k8s)专题

Kubernetes Kubernetes 1 介绍说明 1.1 发展历程 1、MESOS 是PACHE 下开原分布式资源管理框架 ,在 2019-5 最大使用者Twitter 全部转向为 Kubernetes 2、Docker Swarm 是开原分布式资源管理框架 ,在2019-07 阿里云宣布 Docker Swarm 集群框架从阿里云选择框架中剔除 3、 Kubernetes 由Google开发,Golang具有10年容器化基础框架 1.2 K8s概念/术语 1、Cluster 集群 K8s可利用的主

z12456784554的博客 1068

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

认识K8S的基本概念和原理

1、kbs的管理员访问集群2、 通过AUTH权限验证3、 API-SERVER提供集群统一的访问接口调用ETCD的存储信息KUBE-controller-manager:节点控制器。对容器控制。KUBE-schudel:节点调度器,在每个不同的位置部署不同的容器。4、 node1节点和node2节点:每一个节点上会部署不同的pod。不同的pod里面都是不同的容器。5、 节点的监控器是kubelet:来管理node节点上的docker资源6、 kube-proxy:来管理每个pod的网络节点。

m0_75209491的博客 2059

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

K8s网络模型

Docker网络模型 容器 容器不是模拟一个完整的操作系统,而是对进程进行隔离,对容器里的进程来说它接触到的各种资源都是独享的,比虚拟机启动快、占用资源少。 Docker Docker是对Linux底层容器技术的封装,提供容器使用接口,docker将应用程序和该程序的依赖打包在同一个文件,即Docker image,运行Docker image就会生成一个Docker容器,程序在容器里运行就像在物理机或者虚拟机一样。 容器与虚拟机对比 虚拟机要模拟整台机器的操作系统,包括硬件资源;容器和主机共享操作系统,容

bobi的博客 3972

windows系统docker+k8s搭建rancher本地开发环境

一、k8s安装:    参考:https://github.com/AliyunContainerService/k8s-for-docker-desktop; 为 Docker daemon 配置镜像加速,使用中科大镜像加速地址 https://docker.mirrors.ustc.edu.cn 可选操作: 为 Kubernetes 配置 CPU 和 内存资源。 预先从阿里云D...

解忧小童子 5083

【云原生Kubernetes系列第二篇】Kubernetes(k8s)核心组件(对的人兜兜转转最后还是会遇见)

Kubernetes(K8S)是一个容器集群编排工具,提高对大规模容器管理的效率,实现在多台主机上编排容器,实现服务发现、服务调度、动态伸缩等功能用于暴露 Kubernetes API,任何资源请求或调用操作都是通过 kube-apiserver 提供的接口进行。以 HTTP Restful API 提供接口服务,所有对象资源的增删改查和监听操作都交给 API Server 处理后再提交给 Etcd 存储。API Server的架构:Controller Manager结构图 运行管理控制器,是 K8S 集

Stevelu的技术博客 1258

Kubernetes(k8s)的引入知识

k8s的一些基本概念的介绍

NicolasNRH的博客 417

K8S节点磁盘空间不足导致502错误的排除

业务pod基本正常,但进不去,估计是ingress的问题。业务系统出现502错误,k8s dashboard也上不去了,执行命令。再看磁盘空间有17%了,接着就生启ingress pod吧。接下来就是扩充磁盘,减少日志等工作了。发现很多evicted pod。再看业务系统正常了。

weixin_45357522的博客 405

快速部署k8s以及dashboard

本文介绍利用kubeadm快速部署k8s集群,以及部署k8s webui(dashboard) 准备 两台以上服务器(2核4G以上) Centos 7.6 OS配置 所有服务器配置hostname,以及添加/etc/hosts # 修改 hostname hostnamectl set-hostname HOSTNAME# # 设置 hostname 解析 echo "IP(内网ip) ...

weixin_42526859的博客 374

【云原生】Kubernetes容器编排工具

Kubernetes,词根源于希腊语的 舵手、飞行员。在国内又称k8s(因为k和s之间有8个字母,所以得名。“国内程序员的幽默”)。用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。K8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后经GO语言延用Borg的思路重写并捐献给CNCF基金会开源。云原生基金会(

Sp_Tizzy的博客 1915
上一篇: kubernetes之ingress及ingress controller
下一篇: protobuf 和 json转换
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值