环境介绍

节点 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. Linux 下 PostgreSQL 源码编译安装

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. PostgreSQL 是一个功能强大的开源对象关系数据库管理系统(ORDBMS),它从伯克利写 ...

  2. 万字长文讲透 RocketMQ 4.X 消费逻辑

    RocketMQ 是笔者非常喜欢的消息队列,4.9.X 版本是目前使用最广泛的版本,但它的消费逻辑相对较重,很多同学学习起来没有头绪. 这篇文章,笔者梳理了 RocketMQ 的消费逻辑,希望对大家有 ...

  3. k8s实战案例之部署redis单机和redis cluster

    1.在k8s上部署redis单机 1.1.redis简介 redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009 ...

  4. 强国杯南部西部赛区分区晋级赛WP

    Misc 空白文件 解压的文件,通过kali strings 查看到base64加密,把%7B换成'{',%7D换成'}' 迷惑的时间 导出3.jpg原始数据信息 去掉没用的头部信息,得到3.jpg图 ...

  5. Swift4 入门到精通(第二章基本数据类型与量值)

    第二章 量值和基本数据类型 Swift 支持的基本数据类型, 整型,浮点型,布尔型,元组,可选类型. 学习的目标: 常量与变量的意义.声明.命名规范.类型 数据进制与计算机存储原理 整型数据.浮点型数 ...

  6. Dubbo负载均衡策略之 一致性哈希

    本文主要讲解了一致性哈希算法的原理以及其存在的数据倾斜的问题,然后引出解决数据倾斜问题的方法,最后分析一致性哈希算法在Dubbo中的使用.通过这篇文章,可以了解到一致性哈希算法的原理以及这种算法存在的 ...

  7. Linux系统运维之Zookeeper集群配置

    一.简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.ZooKeeper的目标就是封装好复杂易 ...

  8. qrcode模块生成二维码

    安装qrcode模块 pip install qrcode 简单使用 import qrcode data = 'hello world' img = qrcode.make(data) # 显示二维 ...

  9. influxdb常用sql总结

    本文为博主原创,转载请注明出处: 1.登录influxdb influx -username admin -password "password" 2.查看数据库 ##查看有哪些数 ...

  10. 阿里云 MongoDB 创建库添加用户并授权

    先通过 root 进到 admin 库, 右击test 选择用户管理 测试连接