当前位置: 首页 > news >正文

K8S集群-基于Ingress资源实现域名访问

目录

一、准备

1、在master节点部署ingress的资源清单文件

2、在node节点部署ingress-1.11.tar镜像(根据部署环境选择版本)

二、基于NodePort模式验证

1、在master节点进入ingress的资源清单文件

2、修改deploy.yaml文件

3、生成deploy.yaml资源

4、在node节点中将ingress镜像导入

5、现在修改NodPort

6、写一个nginx资源清单

7、设置http代理,创建ingress-http.yaml

8、创建ingress-http.yaml资源

9、查看pod运行节点和端口号

10、在访问主机的hosts文件中添加pod运行节点的ip和域名

11、通过域名访问

三、基于LoadBalancer模式验证

1、在master节点部署metallb负载均衡器

2、进入metallb配置文件

3、创建一个IP地址池

4、关联IP地址池

5、加载metallb资源清单

6、加载IP池

7、加载地址池关联规则

8、创建nginx资源清单

9、向http域名解析文件中添加新域名

10、更新域名解析文件

11、加载nginx资源清单

12、修改 LoadBalancer

13、访问


一、准备

1、在master节点部署ingress的资源清单文件

2、在node节点部署ingress-1.11.tar镜像(根据部署环境选择版本)

二、基于NodePort模式验证

1、在master节点进入ingress的资源清单文件

cd /ingress/ingress-nginx-controller-v1.11.3/deploy/static/provider/cloud

2、修改deploy.yaml文件

  • type修改为NodePort(可以在文件中直接修改,也可以启动后修改)

  • 删除文件内所有版本后的哈希算法

3、生成deploy.yaml资源

kubect create -fdeploy.yaml

会生成新的资源清单ingress-nginx

4、在node节点中将ingress镜像导入

docker  load -i ingress-1.11.tar 

5、现在修改NodPort

kubectl -n ingress-nginx edit svc ingress-nginx-controller 

6、写一个nginx资源清单

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-deploy
  template:
    metadata:
      labels:
        app: nginx-deploy
    spec:
      containers:
      - image: nginx:latest
        imagePullPolicy: IfNotPresent
        name: nginx
        ports:
        - containerPort: 80
---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-deploy
  name: nginx-svc
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx-deploy
  type: ClusterIP

7、设置http代理,创建ingress-http.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
# 创建一个类型为Ingress的资源
metadata:
  name: nginx-ingress
# 这个资源的名字为 nginx-ingress
spec:
  ingressClassName: nginx
# 使用nginx
  rules:
  - host: nginx.jx.com
# 访问此内容的域名
    http:
      paths:
      - backend:
          service:
            name: nginx-svc
# 对应nginx的服务名字,该规则的namespace必须与service的一致
            port:
              number: 80
# 访问的端口
        path: / # 匹配规则
        pathType: Prefix # 匹配类型,这里为前缀

8、创建ingress-http.yaml资源

kubectl apply -f ingress-http.yaml

9、查看pod运行节点和端口号

node1节点

端口号31382

10、在访问主机的hosts文件中添加pod运行节点的ip和域名

11、通过域名访问

三、基于LoadBalancer模式验证

1、在master节点部署metallb负载均衡器

2、进入metallb配置文件

cd /metallb-0.14.8/config/manifests

3、创建一个IP地址池

cat >IPAddressPool.yaml<<EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: planip-pool
#这里与下面的L2Advertisement的ip池名称需要一样
  namespace: metallb-system
spec:
  addresses:
  - 192.168.158.135-192.168.158.150
#自定义ip段,不要与集群IP冲突
EOF

4、关联IP地址池

cat >L2Advertisement.yaml<<EOF
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: planip-pool
  namespace: metallb-system
spec:
  ipAddressPools:
  - planip-pool
#这里需要跟上面ip池的名称保持一致
EOF

5、加载metallb资源清单

6、加载IP池

7、加载地址池关联规则

8、创建nginx资源清单

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

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-deploy1
  name: nginx-svc1
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx-deploy1
  type: LoadBalancer

9、向http域名解析文件中添加新域名

10、更新域名解析文件

11、加载nginx资源清单

12、修改 LoadBalancer

kubectl -n ingress-nginx edit svc ingress-nginx-controller

13、集群外部主机访问

http://www.dtcms.com/a/341603.html

相关文章:

  • 软件测试面试题真题分享
  • 华为云之基于鲲鹏弹性云服务器部署openGauss数据库【玩转华为云】
  • VMware Workstation | 安装Ubuntu20.04.5
  • 红警国家的注册
  • Linux系统:管道通信
  • 牛津大学xDeepMind 自然语言处理(4)
  • README
  • AVL左旋右旋 学习小得
  • 【机器学习】什么是损失景观(Loss Landscape)?
  • Claude Code Git Commit Push 命令
  • 大模型4位量化 (46)
  • linux内核源码下载
  • CMOS知识点 MOS管不同工作区域电容特性
  • SED项目复现学习实录
  • Linux基础介绍-3——第一阶段
  • oracle服务器导入dmp文件
  • 力扣 hot100 Day79
  • ragflow 通过HuggingFace 配置rerank模型
  • 有序二叉树的删除
  • leetcode 3 无重复字符的最长子串
  • 个人使用AI开发的《PlSqlRewrite4GaussDB(PLSQL自动转换工具)1.0.1 BETA》发布
  • 【OneAI】使用Rust构建的轻量AI网关
  • linux环境问题
  • HyperMesh许可证分配优化策略
  • 【Ansible】变量、机密、事实
  • 福昕PDF编辑软件高级版下载与详细图文安装教程!!
  • Pub/Sub是什么意思
  • LWIP的Socket API 与实现关系
  • c#入门笔记(3)
  • 图像数据增强的高效执行