Ingress controller

Nginx -->后来改造

Traefik -->也是用于微服务

Envoy  -->微服务

Ingress资源

目前使用0.17.1版本ingress-nginx

ingress定义  后端pod发生变化,service就变化,service变化ingress就发生变化,ingress再把变化注入到ingress-nginx-controller主容器的nginx的backend反向代理配置且重载配置文件使之能够动态改变反向代理配置

kubectl explain ingress

kubectl explain ingress.spec

kubectl explain ingress.spec.rules

kubectl explain ingress.spec.rules.http

kubectl explain ingress.spec.backend 关联后端

在github上下载ingress nginx

yum install git -y

kubectl create namespace env 创建名称空间

kubectl get ns

kubectl delete ns env 删除名称空间

需要用到的文件

namespace.yaml

rbac.yaml

with-rbac.yaml

configmap.yaml

udp-services-configmap.yaml

tcp-services-configmap.yaml

下载镜像:

docker pull googlecontainer/defaultbackend:1.4

docker tag docker.io/googlecontainer/defaultbackend:1.4 gcr.io/google_containers/defaultbackend:1.4

docker pullibmcom/nginx-ingress-controller:0.23.0

1.先创建namespace

kubectl apply -f namespace.yaml

然后其他一起创建

kubectl create -f ./

2.或者使用一键部署

kubectl create -f mandatory.yaml

查询是否在下载ingress镜像

kubectl get pods -n ingress-nginx

kubectl explain ingress.spec

cp deploy-demo.yaml ../ingress-nginx/

vim deploy-demo.yaml

apiVersion: v1

kind: Service

metadata:

name: myapp-service

namespace: default

spec:

selector:

app: myapp

release: canary

ports:

- name: http

targetPort: 80 容器端口

port: 80 service端口

---

apiVersion: apps/v1

kind: Deployment

metadata:

name: myapp-deploy 控制器名

namespace: default

spec:

replicas: 3 3个副本

selector:

matchLabels: 匹配标签

app: myapp

release: canary

template:

metadata:

labels: 定义pod标签

app: myapp

release: canary

spec:

containers:

- name: myapp 容器名

image: ikubernetes/myapp:v2

ports:

- name: http

containerPort: 80 容器端口

kubectl apply -f deploy-demo.yaml 先创建pods和svc

kubectl get pods

kubectl get svc

kubectl describe pods nginx-ingress-controller-589b9b8c9d-7mkng -n ingress-nginx  查看为什么下载不成功 -n 指定名称空间

创建 service-nodeport

cat service-nodeport.yaml

apiVersion: v1

kind: Service

metadata:

name: ingress-nginx

namespace: ingress-nginx 名称空间

labels:

app.kubernetes.io/name: ingress-nginx

app.kubernetes.io/part-of: ingress-nginx

spec:

type: NodePort service类型为nodeport

ports:

- name: http

nodePort: 30080  node端口

port: 80  service端口

targetPort: 80 pod端口

protocol: TCP

- name: https

nodePort: 30443

port: 443

targetPort: 443

protocol: TCP

selector: 指定ingress-ningx-controller 主容器标签

app: ingress-nginx

kubectl apply -f service-nodeport.yaml

kubectl get svc -n ingress-nginx   查询创建是否成功

开放服务 创建ingress控制把服务放出去,同步pod的nginx配置文件

vim ingress-myapp.yaml

apiVersion: extensions/v1beta1

kind: Ingress 类型

metadata:

name: ingress-myapp

namespace: default

annotations:

kubernetes.io/ingress.class: "nginx" 指定的控制器类ingress 叫 nginx 生成匹配规则

spec:

rules: 规则

- host: myapp.baidu.com 指定外部访问的host域名

http:

paths: 转发路径

- path:

backend: 指定backend反向代理

serviceName: myapp-service  转发的service

servicePort: 80   转发的service port

kubectl apply -f service-nodeport.yaml

查询创建是否成功

kubectl get ingress

查看详细信息

kubectl describe ingresses

创建成功,自动注入ingress-nginx-controller主容器,即自动转换成nginx配置文件

进入ingress-nginx-controller 检查

kubectl exec  -n ingress-nginx -it  nginx-ingress-controller-5dc4979fb6-nfvvt -- /bin/sh

cat nginx.conf 看是否已经写入配置信息

访问测试:

node绑定 hosts

https://myapp.com:30080

ssl证书:

openssl genrsa -out tls.key 2048

私钥:tls.key

openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=Beijing/L=Beijing/O=devops/CN=myapp.com

自签证书:tls.crt

kubectl create secret tls myapp-ingress-secret --cert=tls.crt --key=tls.key

注入到k8s

kubectl get secrets

查询是否创建secret

kubectl describe secrets myapp-ingress-secret

kubectl explain ingress.spec

kubectl explain ingress.spec.tls

cp ingress-myapp.yaml ingress-myapp-tls.yaml

vim ingress-myapp-tls.yaml

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

name: ingress-myapp-tls

namespace: default

annotations:

kubernetes.io/ingress.class: "nginx"

spec:

tls:

- hosts:

- myapp.baidu.com

secretName: myapp-ingress-secret

rules:

- host: myapp.baidu.com

http:

paths:

- path:

backend:

serviceName: myapp-service

servicePort: 80

创建ingress

kubectl apply -f ingress-myapp-tls.yaml

kubectl get ingress

kubectl describe ingress  ingress-myapp-tls

查看主容器配置文件,有443监听

kubectl exec  -n ingress-nginx -it  nginx-ingress-controller-5dc4979fb6-nfvvt -- /bin/sh

结果:listen 443  ssl http2;

访问测试:

node绑定 hosts

https://myapp.com:30443

数据流向 外部--> service_nodeport --> service --> pod_network

Ingress控制ingress-ningx-controller主容器进行反向代理

k8s之ingress反向代理pod的更多相关文章

  1. 详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

    写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群必经之口.这到大门到底有什么作用?我们如何使用Ingress?k8s又是如何进行服务发现的呢?先看一 ...

  2. 初试 Kubernetes 集群中使用 Traefik 反向代理

    初试 Kubernetes 集群中使用 Traefik 反向代理 2017年11月17日 09:47:20 哎_小羊_168 阅读数:12308    版权声明:本文为博主原创文章,未经博主允许不得转 ...

  3. (转)详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

    转:https://www.cnblogs.com/justmine/p/8991379.html 写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群 ...

  4. k8s系列---ingress资源和ingress-controller

    https://www.cnblogs.com/zhangeamon/p/7007076.html http://blog.itpub.net/28916011/viewspace-2214747/ ...

  5. 容器编排系统k8s之Ingress资源

    前文我们了解了k8s上的service资源的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14161950.html:今天我们来了解下k8s上的In ...

  6. k8s之ingress及ingress controller

    1.ingress概述 图解:第一个service起到的作用是:引入外部流量,也可以不用此方式,以DaemonSet控制器的方式让Pod共享节点网络,第二个service的作用是:对后端pod分组,不 ...

  7. Kubernetes K8S之Ingress详解与示例

    K8S之Ingress概述与说明,并详解Ingress常用示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  8. K8S部署超过节点的Pod

    在阿里云上部署了一个K8S集群,一master, 两node: 然后执行 kubectl create -f tomcat.yml yaml如下: apiVersion: apps/v1 kind: ...

  9. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  10. K8s中的多容器Pod和Pod内容器间通信

    容器(Container)常被用来解决比如微服务的单个问题,但在实际场景中,问题的解决往往需要多容器方案.本文会讨论将多个容器整合进单个Kubernetes Pod 中,以及Pod中的容器之间是如何通 ...

随机推荐

  1. WinForm 多线程+委托来防止界面假死

    参考: http://www.cnblogs.com/xpvincent/archive/2013/08/19/3268001.html 当有大量数据需要计算.显示在界面或者调用sleep函数时,容易 ...

  2. Linux编写一个自己的命令

    Linux编写一个自己的命令 编译一个.c文件,生成可执行文件out.out只有在当前目录下可以执行. 而命令可在任何路径执行 想让out可以在任意路径执行,有以下两种办法 1.将执行文件添加到 /b ...

  3. autMan奥特曼机器人-对接deepseek教程

    一.安装插件ChatGPT 符合openai api协议的大模型均可使用此插件,包括chatgpt-4/chatgpt-3.5-turbo,可自定义服务地址和模型,指令:gpt,要求Python3.7 ...

  4. Chrome 133 里程碑式更新 - moveBefore, 或开启前端框架未来新纪元?

    相关背景: Chrome 133 版本(将于 2 月 4 日发布稳定版)引入了一个新的 DOM 操作方法:Node.prototype.moveBefore.这一方法虽然看似简单,但其意义重大,因为它 ...

  5. 第二课 - 输入(按键)控制输出(LED)-设备树

    在第一课中学习了如何安装NCS开发环境,以及如何新建一个工程,还有如何构建和下载到开发板.并运行了官方的LED闪烁例程. 设备树 我们继续跟着官方开发者学院的教程来学习第二课的课程.官方课程包含了以下 ...

  6. 【问题解决】Jenkins使用File的exists()方法判断文件存在,一直提示不存在的问题

    小剧场 最近为了给项目组提供一个能给Java程序替换前端.后端的增量的流水线,继续写上了声明式流水线. 替换增量是根据JSON配置文件去增量目录里去取再替换到对应位置的,替换前需要判断增量文件是否存在 ...

  7. Nginx 之fastcgi常用配置项说明

    在LNMP环境中,我们都知道nginx如果要解析php脚本语言,就必须通过配置fastcgi模块来提供对php支持,那么在配置fastcgi的时候,关于fastcgi配置项的值应该怎么设置才能让其发挥 ...

  8. vue浏览器插件及安装

    vue浏览器插件及安装 插件下载: 链接:https://pan.baidu.com/s/1Wu4a4skkJ-i5ccydRnn8qg 提取码:dwux 然后打开浏览器,F12,有这个vue就成功了

  9. Nginx可以同时支持ipv4与 ipv6的监听

    Nginx可以同时支持ipv4与 ipv6的监听,但为了一致性的考虑,新版本Nginx推荐使用分开监听,下面我们开始进入正题. 一.默认IPV4配置 下面我们先来看一看默认的ipv4配置: 二.加入i ...

  10. Mybatis-Plus知识点详解

    Mybatis-plus(简称MP),基于Mybatis的增强工具,保留了Mybatis的所有功能,同时增加了通用的CRUD,条件构造器,分页插件等等实用工具 特性 即拿即用:通过通用Mapper和S ...