热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s中部署ingress服务暴露

专业术语:在这个文档中,您将看到一些在其他地方可以互换使用的术语,这可能会引起混淆。本节试图澄清这些问题。节点:Kubernetes集群中

专业术语:

在这个文档中,您将看到一些在其他地方可以互换使用的术语,这可能会引起混淆。本节试图澄清这些问题。

节点:Kubernetes集群中的一个虚拟或物理机器。

2018-04-15

集群:从internet上防火墙的一组节点,这是由Kubernetes管理的主要计算资源。

边缘路由器:为你的集群执行防火墙策略的路由器。这可能是由云提供商或物理硬件组成的网关。

集群网络:根据Kubernetes网络模型,一组链接,逻辑或物理,可以促进集群内的通信。集群网络的示例包括诸如法兰绒或诸如OVS之类的sdn的覆盖。

服务:Kubernetes服务,它使用标签选择器识别一组豆荚。除非另有提及,否则服务假定只有在集群网络中具有可路由的虚拟ip。

 

 

搭建ingress

一、理论:

组件:

1、default-http-backend 提供一个404页面。当访问无效rul时,就会跳转到这个页面

 

2、nginx-ingress-controller.yaml  ingress的控制器,实时监控集群API,根据ingress里的规则去修改后端的Nginx服务的配置文件

 

3、ingress  修改匹配虚拟域名的规则

 

4、deployment.yaml 生成服务的配置文件。

 

---------------------------------------------------------------------------------------------------

二、搭建

1、创建404页面

[root@iaas-01 as]# cat defautl-http-backend.yaml

 

apiVersion: extensions/v1beta1

 

kind: Deployment        指定pod类型

 

metadata:

 

  name: default-http-backend    给pod起个名字

 

  labels:

 

    app: default-heep-backend   给标签起个名字

 

spec:

 

  replicas: 1       启动几个pod

 

  template:

 

    metadata:

 

      labels:

 

        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: docker.io/googlecontainer/defaultbackend:1.0

 

        livenessProbe:

 

          httpGet:                 健康状态检查

 

            path: /healthz

 

            port: 8080   本地端口

 

            scheme: HTTP

 

          initialDelaySeconds: 30

 

          timeoutSeconds: 5

 

        ports:

 

        - containerPort: 8080   容器中的端口

 

        resources:    指定消耗的系统资源

 

          limits:

 

            cpu: 10m

 

            memory: 20Mi

 

          requests:

 

            cpu: 10m

 

            memory: 20Mi

 

---

 

apiVersion: v1

 

kind: Service

 

metadata:

 

  name: default-http-backend

 

  labels:

 

    app: default-http-backend

 

spec:

 

  ports:

 

  - port: 80   对外端口

 

    protocol: TCP   协议类型

 

    targetPort: 8080    容器内端口

 

  selector:  指向上面的pod的name

 

    app: default-http-backend

 

 

 

 

2、cat nginx-ingress-controller.yaml  

 

apiVersion: v1

 

kind: ReplicationController

 

metadata:

 

  name: nginx-ingress-lb

 

  labels:

 

    name: nginx-ingress-lb

 

spec:

 

  replicas: 1

 

  template:

 

    metadata:

 

      labels:

 

        name: nginx-ingress-lb

 

      annotations:

 

        prometheus.io/port: '10254'

 

        prometheus.io/scrape: 'true'

 

    spec:

 

      terminationGracePeriodSeconds: 60

 

      hostNetwork: true

 

      containers:

 

      - image: docker.io/zerosre/nginx-ingress-controller-0.9.0 

 

        name: nginx-ingress-lb

 

        readinessProbe:

 

          httpGet:

 

            path: /healthz

 

            port: 10254

 

            scheme: HTTP

 

        livenessProbe:

 

          httpGet:

 

            path: /healthz

 

            port: 10254

 

            scheme: HTTP

 

          initialDelaySeconds: 10

 

          timeoutSeconds: 1

 

        ports:

 

        - containerPort: 80

 

          hostPort: 80

 

        - containerPort: 443

 

          hostPort: 443

 

        env:

 

          - name: POD_NAME

 

            valueFrom:

 

              fieldRef:

 

                fieldPath: metadata.name

 

          - name: POD_NAMESPACE

 

            valueFrom:

 

              fieldRef:

 

                fieldPath: metadata.namespace

 

          - name: KUBERNETES_MASTER

 

            value: http://192.168.11.101:8080  apiserver的IP和端口。默认是8080

 

        args:

 

        - /nginx-ingress-controller

 

        - --default-backend-service=$(POD_NAMESPACE)/default-http-backend指定默认的后端端口

 

 

3、cat deployment.yaml

 

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

  name: dashboard-server

spec:

  replicas: 1

  template:

    metadata:

      labels:

        k8s-app: dashboard-server

        version: 1.6.3

        kubernetes.io/cluster-service: "true"

    spec:

      containers:

      - name: dashboard-server

        image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3

        resources:

          # keep request = limit to keep this container in guaranteed class

          limits:

            cpu: 100m

            memory: 50Mi

          requests:

            cpu: 100m

            memory: 50Mi

        ports:

        - containerPort: 9090

        livenessProbe:

          httpGet:

            path: /

            port: 9090

          initialDelaySeconds: 30

          timeoutSeconds: 30

---

apiVersion: v1

kind: Service

metadata:

  name: dashboard-server

  labels:

    k8s-app: dashboard-server

    kubernetes.io/cluster-service: "true"

spec:

  selector:

    k8s-app: dashboard-server

  ports:

  - port: 80

    targetPort: 9090

 

  

4、创建ingress

 

cat jenkins-ingress.yaml

 

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name: dashboard-weblogic-ingress

spec:

  rules:

  - host: www.k8s-app.com

    http:

      paths:

      - path: /jenkins

        backend:

          serviceName: jenkins

          servicePort: 8015

      - path: /

        backend:

          serviceName: dashboard-server

          servicePort: 80

 

 

选自:

http://www.cnblogs.com/ericnie/p/6965091.html

 


 

基于不同域名访问的ingress

 

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name: dashboard-weblogic-ingress

spec:

  rules:

  - host: www.k8s-app.com

    http:

      paths:

      - path: /

        backend:

          serviceName: dashboard-server

          servicePort: 80

  - host: www.k8s-jenkins.com

    http:

      paths:

      - path: /

        backend:

          serviceName: jenkins-huhu

          servicePort: 8018

 

 

 

基于不同路径访问、

 

 apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name: dashboard-weblogic-ingress

  annotations:

    ingress.kubernetes.io/rewrite-target: /

spec:

  tls:

  - hosts:

    - www.k8s-app.com

    secretName: ingress-secret

  rules:

  - host: www.k8s-app.com

    http:

      paths:

      - path: /

        backend:

          serviceName: dashboard-server

          servicePort: 80

      - path: /w2

        backend:

          serviceName: nginx

          servicePort: 80

 

 

TLS访问

自动跳转到HTTPS的URL

生成证书:

1、生成CA自签证书

 

 

mkdir cert && cd cert

 

openssl genrsa -out ca-key.pem 2048

 

openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca.pem -subj "/CN=kube-ca"

 

 

 2、修改OpenSSL配置文件

 

 

cp /etc/pki/tls/openssl.cnf .

 

vim openssl.cnf

 

 

 

# 主要修改如下

 

[req]

 

req_extensions = v3_req # 这行默认注释关着的 把注释删掉

 

# 下面配置是新增的

 

[ v3_req ]

 

basicConstraints = CA:FALSE

 

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

 

subjectAltName = @alt_names

 

[alt_names]

 

DNS.1 = www.k8s-app.com

 

#DNS.2 = kibana.mritd.me

 

 

 

DNS.1指的是自己的虚拟域名

 

 

3、生成证书

 

 

openssl genrsa -out ingress-key.pem 2048

 

openssl req -new -key ingress-key.pem -out ingress.csr -subj "/CN=www.k8s-app.com" -config openssl.cnf

 

openssl x509 -req -in ingress.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out ingress.pem -days 365 -extensions v3_req -extfile openssl.cnf

 

-subj /CN=虚拟域名

 

 

 

4、创建保密字典(secret)

 

 

kubectl create secret tls ingress-secret --namespace=kube-system --key cert/ingress-key.pem --cert cert/ingress.pem

 

kubectl get secret --all-namespaces    查看保密字典

1、一定要注意namespaces的设置,必须要在统一个命名空间中

2、将ingress.yaml文件中的端口改为443

 

转:https://www.cnblogs.com/xinhaige/p/8847866.html



推荐阅读
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 使用Docker安装和运行Nexus
    本文介绍了使用Docker安装和运行Nexus的方法,包括docker-compose.yml配置和启动时可能出现的权限问题解决方法。同时提供了登录控制台验证安装的地址和登录信息。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
author-avatar
hueihuei大海水_598
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有