k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress

背景

外部到调度器的协议是https7层,由一个pod比如nginx直接调度到另一个pod,用一个pod反代至真正服务的pod,那这个pod需要service接入外部流量,这个service定义成nodeport,那么这个pod就成为https会话卸载器,调度器到内部的pod是http4层

Ingress Controller

            在集群中挑出三个节点打上污点、用DaemonSet部署一个pod,定义nodeport使得可以接入外部的7层调度,使用虚拟主机或者url映射的方式定义前端;这个pod就叫Ingress Controller(nginx、traefik、envoy)

Ingress

            Ingress Controller中的配置文件,监视service的变动动态注入到Ingress Controller中

k8s的组成:master、node、附件(

  • kube-dns负责为整个集群提供DNS服务
  • Ingress Controller为服务提供外网入口
  • Heapster提供资源监控
  • Dashboard提供GUI
  • Federation提供跨可用区的集群
  • Fluentd-elasticsearch提供集群日志采集、存储与查询

创建一个后端pod+service

编辑tomcat-demo.yaml

apiVersion: v1
kind: Service
metadata:
  name: tomcat
  namespace: default
spec:
  selector:
    app: tomcat
    release: canary
  ports:
  - name: http
    targetPort: 8080
    port: 8080
  - name: ajp
    targetPort: 8009
    port: 8009
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deploy
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat
      release: canary
  template:
    metadata:
      labels:
        app: tomcat
        release: canary
    spec:
      containers:
      - name: tomcat
        image: tomcat:8.5.32-jre8-alpine
        ports:
        - name: http
          containerPort: 8080
        - name: ajp
          containerPort: 8009

执行创建

 

部署Ingress contorller

访问https://github.com/kubernetes/ingress-nginx

创建ingress-nginx目录

进入目录将yaml文件下载到本地

for file in configmap.yaml mandatory.yaml namespace.yaml rbac.yaml with-rbac.yaml; do wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/$file; done
k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第1张图片

要先部署namespace.yaml其余的不分先后顺序

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第2张图片

此时会自动的去拖ingress-nginx的镜像

 

此时还需要给ingress-conller加一个service使他能够接入集群外部流量

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第3张图片

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第4张图片

编辑service-nodeport.yaml,nodeport不让其随机

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第5张图片

创建

还可以访问Ingress-nginx的自己的主页https://kubernetes.github.io/ingress-nginx/deploy/选择通用部署来部署

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第6张图片

裸机不是云环境的话需要执行Bare-metal也可通过手动改造with-rbac.yaml将deployment改为daemonset,去掉replicas在pod模板上的spec加上hostnetwork

定义Ingress相关配置

编辑ingress的yaml配置文件

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第7张图片

kubectl apply ingress-tomcat.yaml

查看

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第8张图片

 

此时访问tomcat.zhangfu.com:30090

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第9张图片

升级成为https服务

做证书

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第10张图片

编辑配置文件

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第11张图片

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress_第12张图片

进入pod内部

$cat nginx.conf

 

 

你可能感兴趣的:(k8s)