虚拟侵入

kubernetes系列教程(十六)基于nginx ingress实现服务暴露

吃可爱长大的小学妹 提交于 2020-01-03 19:27:17
文章目录 写在前面 Ingress简介 Nginx Ingress 2.1 Nginx ingress介绍 2.2 Nginx ingress安装 Ingress资源定义 3.1 Ingress定义 3.2 Ingress动态配置 3.3 Ingress路径转发 3.4 Ingress虚拟主机 3.5 Ingress TLS加密 Nginx Ingress高级功能 4.1 定制化参数 4.2 虚拟主机和路由 写在最后 参考文献 写在前面 本章介绍 kubernetes系列教程 的ingress概念,在kubernetes中对外暴露服务的方式有两种:service(NodePort或者外部LoadBalancer)和ingress,其中service是提供四层的负载均衡,通过iptables DNAT或lvs nat模式实现后端Pod的代理请求。如需实现http,域名,URI,证书等请求方式,service是无法实现的,需要借助于ingress来来实现,本文将来介绍ingress相关的内容。 1. Ingress简介 An API object that manages external access to the services in a cluster, typically HTTP. Ingress can provide load balancing, SSL

kubernetes ingress(三): traefik: 多域名及证书配置

最后都变了- 提交于 2019-12-30 05:44:23
目标: 部署三个服务traefik-ui,grafana,prometheus,并通过traefik 反向代理。 service namespaces domain name https traefik-ui traefik traefik.qyd.com Y grafana kube-system grafana.dfb.com N prometheus kube-system prometheus.qyd.com Y 步骤: 1、部署traefik 相关资源yml https://github.com/xiaocaisgit/k8sAbout/blob/master/traefik/rbac.yml https://github.com/xiaocaisgit/k8sAbout/blob/master/traefik/deployment.yml https://github.com/xiaocaisgit/k8sAbout/blob/master/traefik/configmap.yml https://github.com/xiaocaisgit/k8sAbout/blob/master/traefik/prometheus-ingress.yml https://github.com/xiaocaisgit/k8sAbout/blob/master/traefik

k8s-ingress安装

空扰寡人 提交于 2019-12-30 04:54:17
一、编写 nginx-ingress-controller.yaml文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: default-http-backend labels: k8s-app: default-http-backend namespace: kube-system spec: replicas: 1 template: metadata: labels: k8s-app: default-http-backend spec: terminationGracePeriodSeconds: 60 containers: - name: default-http-backend # Any image is permissable as long as: # 1. It serves a 404 page at / # 2. It serves 200 on a /healthz endpoint image: gcr.io/google_containers/defaultbackend:1.0 livenessProbe: httpGet: path: /healthz port: 8080 scheme: HTTP initialDelaySeconds: 30

Ingress 对象

一笑奈何 提交于 2019-12-24 19:16:30
Ingress 介绍 在Kuberbetes中除了使用NodePort,LoadBalancer, Port Proxy(hostPort)等实现外部访问入口之外,还可以使用Kubernetes 自带的Ingress来实现服务的负载均衡和策略路由的工作,其本质相当于一个Nginx代理服务器,可以对请求(http)实现精细的控制。 Ingress 是可以利用 Nginx、Haproxy 等负载均衡器暴露集群内服务的工具, 使用Ingress可以配置一个用于外部访问的URL地址,同时实现流量负载,SSL,基于名称的虚拟主机(例如Nginx的upstream)等。用户通过发送POST请求到API server,来申请Ingress资源, Ingress控制器负责完成Ingress转发工作,通常会使用负载均衡,也可以配置边缘路由器或其他前端以帮助以HA方式处理流量。 在当前版本中,Ingress处于测试版本,在使用Ingress时,需要先创建Ingress Contronller. 创建Ingree Controller 参考链接 在Kubernetes中,Ingress Controller将以Pod的形式运行,监控apiserver的 ingress接口后端的backend services,如果service发生变化,则Ingress Controller 应自动更新其转发规则。

kuberneters集群中使用traefik发布服务

心不动则不痛 提交于 2019-12-24 19:16:25
前文已经介绍过了k8s ingress的实现原理和配置,本文将介绍替代方案traefik。在开始配置之前我们先回顾一下ingress发布k8s服务的实现方案,ingress方案需要使用下列的组件: 1、反向代理负载均衡器 2、ingress control 3、ingress 其中ingress control负责同apiserver进行通信,监测pod和service的变化,并更新反向代理负载均衡器的配置,同时让反向代理负载均衡器重载配置。 接下来我们来看看traefik,官网地址: https://traefik.io/ Traefik (pronounced like traffic) is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker,Swarm mode,Kubernetes,Marathon, Consul,Etcd,Rancher,Amazon ECS, and a lot more) to manage its configuration automatically and dynamically. Traefik本质上是一个http的方向代理和负载均衡

K8S集群Ingress https实践

最后都变了- 提交于 2019-12-24 19:11:59
前文介绍使用ingress结合traefik实现了入口的动静分离,本文将在前文基础上实现ingress的https配置。 为了简单且高效,建议应用容器化部署之后,https卸载在ingress这一级实现。通俗一点来说就是用户到ingress的连接走https协议,ingress到后端服务的连接走http协议。 我们对https的配置要求也比较简单,主要如下: 1、http自动重定向到https 2、https支持虚拟主机(TLS SNI) 一、初始环境准备 1、这里为了方便测试,把前文配置的网站动态部分路由规则都拿掉,仅保留静态部分 2、配置hosts解析记录 3、http访问测试 二、准备证书文件和配置文件 1、这里将两个站点的四个证书文件统一放到一个secret里面去维护 # kubectl create secret generic traefik-cert --from-file=star_59iedu_com.key \ --from-file=star_59iedu_com.pem \ --from-file=star_yingjigl_com.key \ --from-file=star_yingjigl_com.pem -n kube-system 2、配置http重定向到https,同时支持多个https虚拟主机(TLS SNI) # cat traefik

ingress搭建

 ̄綄美尐妖づ 提交于 2019-12-24 19:06:30
1.先创建需要访问的后端及控制器service vim myapp.yaml #实际被访问的容器 apiVersion: v1 kind: Service metadata: name: myapp spec: selector: app: myapp ports: - name: http port: 80 targetPort: 80 #创建一个service, --- apiVersion: apps/v1 kind: Deployment metadata: name: myapp #创建一个控制器 spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: ikubernetes/myapp:v2 #创建3个容器 2.下载ingress得所需得文件 for i in configmap.yaml namespace.yaml rbac.yaml tcp-services-configmap.yaml with-rbac.yaml;do wget https://github.com/kubernetes/ingress-nginx/tree/master/deploy

traefik-Ingress边缘路由器落地到微服务

喜夏-厌秋 提交于 2019-12-20 08:26:40
1.理解Ingress 简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器. 它最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置。 2.以下配置文件可以在kubernetes-handbookGitHub仓库中的../manifests/traefik-ingress/目录下找到。 2.1创建ingress-rbac.yaml 将用于service account验证。 apiVersion: v1 kind: ServiceAccount metadata: name: ingress namespace: kube-system --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: ingress subjects: - kind: ServiceAccount name: ingress namespace: kube-system roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io

K8s资源第四篇(Ingress-nginx)

感情迁移 提交于 2019-12-19 02:51:04
Ingress:  Kubernetes 暴露服务的有三种方式,分别为 LoadBlancer Service、NodePort Service、Ingress。  官网对 Ingress 的定义为管理对外服务到集群内服务之间规则的集合,通俗点讲就是它定义规则来允许进入集群的请求被转发到集群中对应服务上,从来实现服务暴漏。 Ingress 能把集群内 Service 配置成外网能够访问的 URL,流量负载均衡,终止SSL,提供基于域名访问的虚拟主机等等。  可以把Ingress理解为一个调度器。 原因: Pod漂移问题:  Kubernetes 具有强大的副本控制能力,能保证在任意副本(Pod)挂掉时自动从其他机器启动一个新的,还可以动态扩容等,通俗地说,这个 Pod 可能在任何时刻出现在任何节点上,也可能在任何时刻死在任何节点上;那么自然随着 Pod 的创建和销毁,Pod IP 肯定会动态变化;那么如何把这个动态的 Pod IP 暴露出去?这里借助于 Kubernetes 的 Service 机制,Service 可以以标签的形式选定一组带有指定标签的 Pod,并监控和自动负载他们的 Pod IP,那么我们向外暴露只暴露 Service IP 就行了;这就是 NodePort 模式:即在每个节点上开起一个端口,然后转发到内部 Pod IP 上,如下图所示:  此时的访问方式

入门级实操教程!从概念到部署,全方位了解K8S Ingress!

与世无争的帅哥 提交于 2019-12-18 17:29:52
Kubernetes Ingress用于添加规则,以将流量从外部路由到Kubernetes集群的服务中。在本文中你将了解ingress 的概念,以及用于路由外部流量到Kubernetes deployment的ingress controller。 通常情况下,自定义Nginx或HAproxy Kubernetes部署将作为服务被暴露,它们用于将外部流量代理到内部集群的服务中。其中,路由规则将会bake到Pod中,并作为configmap添加。Kubernetes ingress的行为与此类似,只是路由规则将作为Kubernetes ingress对象维护。它具有动态路由规则配置的巨大优势,因此无需重新部署proxy pods。 Kubernetes Ingress入门浅析 想要顺利开始使用Kubernetes Ingress,你需要了解以下两个关键概念: 1、 Kubernetes Ingress 2、 Kubernetes Ingress Controller 让我们来逐一了解。 Kubernetes Ingress Kubernetes Ingress是一个原生的Kubernetes资源,你可以设置规则来从外部路由流量到集群内部的服务端点。它需要一个Ingress Controller来路由ingress对象所指定的规则。Ingress 对象如下所示: apiVersion: