k8s对外服务暴露方式-ingress配置

本文介绍了k8s对外服务的几种方式,重点讲解了使用ingress-nginx进行服务暴露的步骤,包括git下载、配置修改、在master和node节点上的部署,以及ingress资源的创建和验证过程。
摘要由CSDN通过智能技术生成

k8s 对外服务设置

对外服务方式

  1. kube-proxy 只允许本地访问
  2. NodePort 使用物理机端口和k8s service虚拟ip:端口 映射
  3. LoadBalancer 使用NodeIp+Nodeport的方式实现, 配合云环境GCE、aws提供的负载地址
  4. ingress 使用开源的反向代理负载均衡器来实现对外暴漏服务,比如 Nginx、Apache、Haproxy等

ingress-nginx安装使用

git下载ingress-nginx

git clone https://github.com/kubernetes/ingress-nginx.git

切换到deploy目录下
在这里插入图片描述

修改mandatory.yaml

在这里插入图片描述
设置 hostNetwork: true

由于ingress 使用到物理机的80/443 端口,若在master上端口被占用会出现无法使用问题,所以在node节点物理机上进行ingress的安装

master节点

在这里插入图片描述

node节点

执行

查看端口
netstat -tunlp

创建ingress-nginx
kubectl apply -f mandatory.yaml

在这里插入图片描述

ingress使用

创建my-nginx

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30003
  selector:
    run: my-nginx

创建my-apache

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-apache
spec:
  replicas: 2
  template:
    metadata:
      labels:
        run: my-apache
    spec:
      containers:
      - name: my-apache
        image: httpd:2.4
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: my-apache
  labels:
    run: my-apache
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30002
  selector:
    run: my-apache

创建test-ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
spec:
  rules:
  - host: test.apache.ingress
    http:
      paths:
      - path: /
        backend:
          serviceName: my-apache
          servicePort: 80
  - host: test.nginx.ingress
    http:
      paths:
      - path: /
        backend:
          serviceName: my-nginx
          servicePort: 80

查询ing

kubectl get ing

在这里插入图片描述

检验结果

curl -v http://192.168.136.19 -H ‘host: test.apache.ingress’

在这里插入图片描述

curl -v http://192.168.136.19 -H ‘host: test.nginx.ingress’

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

欢迎大家一起加入讨论!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

未来AI编程

共鸣===鼓励 打赏您随意

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

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

打赏作者

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

抵扣说明:

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

余额充值