k8s重点知识Ingress技法精讲

理论

请添加图片描述

Ingress 解决什么问题

  1. 动态配置服务

如果按照传统方式, 当新增加一个服务时, 我们可能需要在流量入口加一个反向代理指向我们新的k8s服务. 而如果用了Ingress, 只需要配置好这个服务, 当服务启动时, 会自动注册到Ingress的中, 不需要额外的操作。

  1. 减少暴露不必要端口

配置过k8s的都清楚, 第一步是要关闭防火墙的, 主要原因是k8s的很多服务会以NodePort方式映射出去, 这样就相当于给宿主机打了很多孔, 既不安全也不优雅. 而Ingress可以避免这个问题, 除了Ingress自身服务可能需要映射出去, 其他服务都不要用NodePort方式
  
Ingress 工作原理

  1. ingress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化,
  2. 然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置
  3. 再写到nginx-ingress-control的pod里,这个Ingress controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中
  4. 然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。

Ingress网站:
https://github.com/kubernetes/ingress-nginx
https://kubernetes.github.io/ingress-nginx/


示例

提示:使用vim创建yaml并运行,否则,复制可能导致格式错误。

1、 创建2个Deployment
第一个: nginx镜像,replicas:3

vim deploy1.yaml

kind: Deployment
apiVersion: apps/v1
metadata:
  name: deploy1
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent

第二个: httpd镜像,replicas:4
vim deploy2.yaml

kind: Deployment
apiVersion: apps/v1
metadata:
  name: deploy2
spec:
  selector:
    matchLabels:
      app: httpd
  replicas: 4
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd
        imagePullPolicy: IfNotPresent

2、 创建2个SVC资源,
第一个和第一个Deploy绑定

vim svc1.yaml

kind: Service
apiVersion: v1
metadata:
  name: svc1
spec:
  selector:
    app: nginx
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术职场教练

您的是我坚持原创免费作品的不懈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值