环境介绍

节点 master01 work01 work02
主机/ip calico-master01/192.168.195.135 calico-master01/192.168.195.135 calico-master01/192.168.195.135
版本 1.25.2
# 操作系统版本
root@calico-master01:~/bitnami-ingress# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

INSTALLATION

依赖项:需要安装helm,下文介绍的安装就是使用helm安装的。helm安装请参考链接:https://helm.sh/docs/intro/install/

安装ingress-controller

# 添加bitnami的helm仓库,并更新

helm repo add bitnami https://charts.bitnami.com/bitnami

helm update

# 把ingress-controller chart拉取到本地

helm pull bitnami/nginx-ingress-controller

# 拉取下来的是一个压缩包

root@calico-master01:~/helm# ls
nginx-ingress-controller-9.3.18.tgz # 解压缩
root@calico-master01:~/helm/helm# tar -xf nginx-ingress-controller-9.3.18.tgz
root@calico-master01:~/helm/helm# ls
nginx-ingress-controller nginx-ingress-controller-9.3.18.

# 备份默认values.yaml文件,并修改

cp nginx-ingress-controller/values.yaml nginx-ingress-controller/values-prod.yaml

vim nginx-ingress-controller/values-prod.yaml

# 修改以下几个地方
## 第一处是修改ingress-controller服务Deployment的NodeSelector;此处为了把资源部署到打了此标签的节点
404 nodeSelector:
405 kubernetes.io/os: linux
406 edgenode: 'true'

## 第二处是修改默认后端defaultBackend的NodeSelector;此处为了把资源部署到打了此标签的节点
725 nodeSelector:
726 kubernetes.io/os: linux
727 edgenode: 'true'

## 第三处修改ingress-controller服务service的类型,默认是LoadBalance
763 service:
764 ## @param service.type Kubernetes Service type for Controller
765 ##
766 # type: LoadBalancer
767 type: NodePort

# 执行helm install 安装

## 创建命名空间部署ingress-controller
  kubectl create ns bitnami-ingress-nginx
## 节点打标签
  kubectl label nodes calico-work02 edgnode=true

root@calico-master01:~/helm/helm# helm install myingress ./nginx-ingress-controller -f ./nginx-ingress-controller/values-prod.yaml --namespace bitnami-ingress-nginx
NAME: myingress
LAST DEPLOYED: Fri Oct 21 05:36:26 2022
NAMESPACE: bitnami-ingress-nginx
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx-ingress-controller
CHART VERSION: 9.3.18
APP VERSION: 1.4.0 ** Please be patient while the chart is being deployed ** The nginx-ingress controller has been installed.

创建测试资源

# 创建测试资源的命名空间
kubectl create ns test-ns

# 创建httpd测试服务
kubectl apply -f httpd.yaml

root@calico-master01:~/ingress# cat httpd.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: web01
namespace: test-ns
spec:
replicas: 3
selector:
matchLabels:
app: httpd01
template:
metadata:
labels:
app: httpd01
spec:
containers:
- name: httpd
image: httpd:latest
---
apiVersion: v1
kind: Service
metadata:
name: httpd-svc
namespace: test-ns
spec:
selector:
app: httpd01
ports:
- protocol: TCP
port: 80
targetPort: 80

# 创建tomcat测试服务
kubectl apply -f tomcat.yaml

root@calico-master01:~/ingress# cat tomcat.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: web02
namespace: test-ns
spec:
replicas: 3
selector:
matchLabels:
app: tomcat01
template:
metadata:
labels:
app: tomcat01
spec:
containers:
- name: tomcat
image: tomcat:8.5.45
---
apiVersion: v1
kind: Service
metadata:
name: tomcat-svc
namespace: test-ns
spec:
selector:
app: tomcat01
ports:
- protocol: TCP
port: 8080
targetPort: 8080

创建Ingress资源

kubectl apply -f bitnami-ingress.yaml 

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bitnami-ingress
namespace: test-ns
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: www.example.com
http:
paths:
- backend:
service:
name: httpd-svc
port:
number: 80
path: /
pathType: Prefix
- backend:
service:
name: tomcat-svc
port:
number: 8080
path: /tomcat
pathType: Prefix

访问httpd,tomcat应用验证Ingress规则

# 配置本地host域名解析
vim /etc/hosts
...
192.168.195.138 www.example.com
...

# curl命令调用httpd服务
root@calico-master01:~/bitnami-ingress# curl -I www.example.com:30688
HTTP/1.1 200 OK
Date: Fri, 21 Oct 2022 06:19:51 GMT
Content-Type: text/html
Content-Length: 45
Connection: keep-alive
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes

# curl命令调用tomcat服务

root@calico-master01:~/bitnami-ingress# curl -I www.example.com:30688/tomcat
HTTP/1.1 200
Date: Sat, 22 Oct 2022 08:29:08 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive

本地window浏览器访问

需先配置C:\Windows\System32\drivers\etc文件

添加域名与主机的对应关系,这里我这个ip是work02的主机IP

访问http服务

访问tomcat

问题解决:

第一次curl命令执行的时候报错了503

查看ingress-controller的日志

显示ingress的规则没有匹配上,"Error obtaining Endpoints for Service "bitnami-ingress-nginx/httpd-svc": no object matching key "bitnami-ingress-nginx/httpd-svc" in local store",应该是我第一次编辑的ingress的yaml文件,metadata指定的namespace是bitnami-ingress-nginx,而此命名空间底下并没有httpd-svc,所以问题解决就是kubectl delete -f  bitnami-ingress.yaml 删掉bitnami-ingress-nginx命名空间下的ingress,修改bitnami-ingress.yaml,把namespace的值改成httpd-svc一样的test-ns,再kubectl apply -f  bitnami-ingress.yaml

再看看ingress-controller的日志

 

nginx Ingress Controller Packaged by Bitnami的更多相关文章

  1. kubernetes nginx ingress controller部署

    Kubernetes nginx ingress controller部署 1.下载kubernetes nginx的yaml文件 Wget https://raw.githubusercontent ...

  2. Kubernetes 服务入口管理与 Nginx Ingress Controller

    Kubernetes 具有强大的副本,动态扩容等特性,每一次 Pod 的变化 IP 地址都会发生变化,所以 Kubernetes 引进了 Service 的概念.Kubernetes 中使用 Serv ...

  3. 11. Ingress及Ingress Controller(主nginx ingress controller)

    11. Ingress,Ingress Controller拥有七层代理调度能力 什么是Ingress: Ingress是授权入站连接到达集群服务的规则集合 Ingress是一个Kubernetes资 ...

  4. 见异思迁:K8s 部署 Nginx Ingress Controller 之 kubernetes/ingress-nginx

    前天才发现,区区一个 nginx ingress controller 竟然2个不同的实现.一个叫 kubernetes/ingress-nginx ,是由 kubernetes 社区维护的,对应的容 ...

  5. Kubernetes 部署 Nginx Ingress Controller 之 nginxinc/kubernetes-ingress

    更新:这里用的是 nginxinc/kubernetes-ingress ,还有个 kubernetes/ingress-nginx ,它们的区别见 Differences Between nginx ...

  6. 使用 NGINX 和 NGINX Plus 的 Ingress Controller 进行 Kubernetes 的负载均衡

    运行和管理跨机器集群的大规模的容器微服务应用是一个极具挑战的任务.Kubernetes 提供了一个强大的容器编排解决方案,从而帮助我们迎接这个挑战.它包含了一些重要特性,比如容错,自动伸缩,滚动升级, ...

  7. kubernetes nginx ingress 使用记录

    前言 ingress是一种可以暴露k8s集群内部service的方式,用户编辑配置文件定义一个ingress资源即可实现外部网络访问内网service. ingress controller是来管理所 ...

  8. Helm 安装Nginx Ingress

    为了便于将集群中的服务暴露到集群外部,需要使用Ingress.接下来使用Helm将Nginx Ingress部署到Kubernetes上. Nginx Ingress Controller被部署在Ku ...

  9. 实操教程丨如何在K8S集群中部署Traefik Ingress Controller

    注:本文使用的Traefik为1.x的版本 在生产环境中,我们常常需要控制来自互联网的外部进入集群中,而这恰巧是Ingress的职责. Ingress的主要目的是将HTTP和HTTPS从集群外部暴露给 ...

  10. Nginx Ingress on TKE 部署最佳实践

    概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...

随机推荐

  1. 原来kafka也有事务啊,再也不担心消息不一致了

    前言 现在假定这么一个业务场景,从kafka中的topic获取消息数据,经过一定加工处理后,发送到另外一个topic中,要求整个过程消息不能丢失,也不能重复发送,即实现端到端的Exactly-Once ...

  2. .Net7发现System.Numerics.Vector矢量化的一个bug,Issues给了dotnet团队

    因为前几天做.Net7的矢量化性能优化,发现了一个bug.在类System.Numerics.Vector里面的成员变量IsHardwareAccelerated.但是实际上不确定这个bug是visu ...

  3. FPGA加速技术:在数据中心和云计算中的应用

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 应用示例与代码实现讲解 4.1. 应用场景介绍 4. ...

  4. Python潮流周刊#10:Twitter 的强敌 Threads 是用 Python 开发的!

    你好,我是猫哥.这里每周分享优质的 Python 及通用技术内容,大部分为英文,已在小标题注明.(标题取自其中一则分享,不代表全部内容都是该主题,特此声明.) 首发于我的博客:https://pyth ...

  5. AcWing 4490. 染色题解

    题目描述 样例 输入: 6 1 2 2 1 5 2 1 1 1 1 1 输出 3 算法描述 思路 我们以样例为例讲讲思路. 如何确保dfs能顺利便利呢,我们可以使用链式前向星来存图(树) C++代码 ...

  6. Oracle批量处理SQL

    批量更新且更新字段数字需要递增 示例: DECLARE n int; -- 定义变量 BEGIN n:=1000010; --为n 赋值 FOR i IN (SELECT AGENCY.ID FROM ...

  7. debezium同步postgresql数据至kafka笔记

    实验环境 全部部署于本地虚拟机 debezium docker部署 postgresql.kafka本机部署 1 postgresql 1.1 配置 设置postgres密码为123 仿照exampl ...

  8. JVM运行时数据区之堆空间

    JVM运行时数据区之堆空间 1.核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域.堆区在JVM 启动的时候即被创建,其空间大小也就确定了,是JVM管理的最大一块内存空间. & ...

  9. Linux shell:根据盘符定位硬盘在服务器上的位置

    disk-light.sh #!/bin/bash t_dev=$1 [ -b "$t_dev" ] || { echo "-b failed: $t_dev" ...

  10. linux下的venv使用

    首先安装该模块: sudo apt-get install python3-venv 之后创建用于存储工程的文件夹 mkdir [filename] 创建环境: python3 -m venv ven ...