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

网站建设会议记录汉沽网站建设制作

网站建设会议记录,汉沽网站建设制作,百度域名收录提交入口,wordpress免费的模板下载Ingress-NGINX 是一个基于 NGINX 的 Kubernetes Ingress 控制器,旨在将外部 HTTP 和 HTTPS 流量路由到 Kubernetes 集群中的服务。它是 Kubernetes 官方推荐的 Ingress 控制器之一,并且广泛应用于各种生产环境中。 Ingress-NGINX介绍 主要作用 在 Kub…

Ingress-NGINX 是一个基于 NGINX 的 Kubernetes Ingress 控制器,旨在将外部 HTTP 和 HTTPS 流量路由到 Kubernetes 集群中的服务。它是 Kubernetes 官方推荐的 Ingress 控制器之一,并且广泛应用于各种生产环境中。

Ingress-NGINX介绍

主要作用

在 Kubernetes 集群中,Ingress-NGINX 的作用是作为 Ingress Controller 来处理和管理从外部世界进入集群的 HTTP 和 HTTPS 流量。Ingress 是 Kubernetes 提供的 API 资源,允许你定义如何路由外部流量到集群内部的服务,而 Ingress Controller 是执行这些路由规则的实际组件。Ingress-NGINX 就是其中的一种实现,使用 NGINX 来处理流量。

关键功能

  1. 路由外部流量到内部服务

    • Ingress-NGINX 根据定义的 Ingress 资源,将外部 HTTP/HTTPS 请求路由到集群内不同的服务。
    • 通过配置规则,你可以实现 URL 路径的路由(如 /app1 -> service1/app2 -> service2),以及基于域名的路由(如 app.example.com -> service1)。
  2. 支持 HTTPS/TLS 加密

    • Ingress-NGINX 支持通过 TLS(Transport Layer Security)为外部流量提供加密。你可以通过配置证书,轻松启用 HTTPS。
    • 它支持自动证书管理,通常与 Cert-Manager 一起使用来自动化证书的签发和续期。
  3. 负载均衡

    • Ingress-NGINX 提供了负载均衡功能,可以根据负载均衡算法(如轮询、IP 哈希等)将请求分发到不同的后端服务。
    • 作为反向代理,它也可以基于请求的不同特征(如 URL、域名等)将流量路由到不同的服务。
  4. 路径重写和转发

    • Ingress-NGINX 可以根据定义的路由规则进行路径重写,例如将 /api/v1 转发到 /v2
    • 支持请求头的修改和转发,增强灵活性。
  5. 访问控制与身份验证

    • Ingress-NGINX 支持通过配置基本的 HTTP 认证、OAuth2 等方式来进行身份验证。
    • 还可以配置 IP 白名单/黑名单,限制哪些 IP 或者网络可以访问集群中的应用。
  6. 自定义 NGINX 配置

    • 可以通过 ConfigMap注解自定义 NGINX 的配置,比如启用/禁用某些功能,调整超时、连接数等。
    • 也支持对特定 Ingress 资源进行配置,比如设置负载均衡的算法、启用 SSL 等。
  7. 监控与日志

    • Ingress-NGINX 集成了 Prometheus 等监控系统,提供详细的流量、错误率、响应时间等指标。
    • 它也可以输出 NGINX 访问日志和错误日志,便于故障排查。
  8. 高可用性与容错

    • Ingress-NGINX 作为一种控制器,可以部署为多个副本以实现高可用性。
    • 它还支持集群内的故障恢复和流量分发。
工作原理
  1. Ingress 资源:在 Kubernetes 中,开发者通过创建 Ingress 资源 来定义 HTTP/HTTPS 路由规则。Ingress 资源包含域名、路径和服务之间的映射。

    示例 Ingress 资源配置:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:name: my-ingress
    spec:rules:- host: example.comhttp:paths:- path: /app1pathType: Prefixbackend:service:name: service1port:number: 80- path: /app2pathType: Prefixbackend:service:name: service2port:number: 80
    
  2. Ingress Controller:Ingress-NGINX 是 Ingress Controller 的实现,它监视 Kubernetes API Server 中的 Ingress 资源。每当有新的 Ingress 资源创建或更新时,Ingress-NGINX 会动态更新 NGINX 配置,确保流量按照最新的路由规则被正确转发。

  3. NGINX 配置:Ingress-NGINX 控制器运行着 NGINX 实例,NGINX 根据动态配置文件对流量进行路由和负载均衡。当外部用户请求到达集群时,NGINX 会根据路由规则将流量转发到 Kubernetes 服务。

部署 Ingress-NGINX 控制器

通用部署方式

在 Kubernetes 集群中部署 Ingress-NGINX 通常有以下几种方式:

1、使用 Helm 部署: Helm 是 Kubernetes 的包管理工具,你可以通过 Helm Chart 来快速安装 Ingress-NGINX。

helm install ingress-nginx ingress-nginx/ingress-nginx 

2、使用 kubectl 部署: 你也可以通过 kubectl 从官方提供的清单文件直接安装。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml

具体部署这两种方式都有问题:

Helm 部署在拉取镜像registry.k8s.io/ingress-nginx/controller:v1.11.3时,每次都需要访问网络,即使你指定镜像拉取策略,如果本地镜像存在,则访问网络的策略只是验证,但是如果没法验证,他是没法使用的。docker是没有这个问题的,这应该是containerd独有的。

kubectl 部署部署文件用的v1.12.0-beta.0 ,可能有些问题,有些权限不能正确生成,原因未知。

因此修改了helm的镜像拉取,让其使用私有仓库,下面是步骤。

本次部署

1、首先安装helm

2、凭据

修改所有工作节点的/etc/containerd/config.toml,IP:port是私有仓库的地址,http和https均可。

注,registry.k8s.io的阿里云镜像站点,这里使用不成功,原因位置。

# 修改所有工作节点的/etc/containerd/config.toml,增加粗体部分,指定地址和http访问并重启containerd
sudo vim /etc/containerd/config.toml[plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://hub-mirror.c.163.com"]            [plugins."io.containerd.grpc.v1.cri".registry.mirrors."IP:PORT"]endpoint = ["http://IP:PORT"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]endpoint = ["https://mirrors.aliyun.com/google-containers"]sudo systemctl restart containerd

用户名、密码、IP以及端口号请根据自己的私有仓库修改,如果直接输入到shell不管用,建议写入到bash文件,然后执行该文件。

kubectl create  secret docker-registry cnn.io --docker-server=IP:port --docker-username="用户名" --docker-password="密码" --docker-email="dockeruser01@example.com" -n ingress-nginx

3、部署

给特哈勃 访问不了的需要愚昧上网,当然镜像拉取也需要愚昧,不会愚昧上网怎么办,云厂商不是有全球区域的服务器吗,任意一个区域的就行。

由于推送到镜像到私有仓库过程中,sha256值会变化,因此需要先查看该镜像在私有仓库的sha26值,让后传递给helm。

#拉取部署文件
curl -LO https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-4.11.3/ingress-nginx-4.11.3.tgz
#部署命令
helm install nginx-ingress ingress-nginx-4.11.3.tgz 

–namespace ingress-nginx
–create-namespace
–set controller.image.repository=IP:port/ingress-nginx/controller
–set controller.image.tag=v1.11.3
–set controller.image.digest=“sha256:值”
–set controller.image.pullSecrets[0].name=cnn.io

#由于hlem不能认识pullSecrets,因此需要手动更新拉取镜像的凭据
kubectl patch deployment nginx-ingress-ingress-nginx-controller -n ingress-nginx 

-p ‘{“spec”:{“template”:{“spec”:{“imagePullSecrets”:[{“name”:“cnn.io”}]}}}}’
#删除pod,让其重建
kubectl delete pod -n ingress-nginx -l app.kubernetes.io/component=controller

4、私有云需要调整LoadBalancer为nodePort

#查看现有情况
kubectl get svc -n ingress-nginx
NAME                                               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
nginx-ingress-ingress-nginx-controller             LoadBalancer   10.150.225.38   <pending>     80:30692/TCP,443:31509/TCP   47s
nginx-ingress-ingress-nginx-controller-admission   ClusterIP      10.150.226.63   <none>        443/TCP                      47s#输出对应的svc配置文件
kubectl get svc nginx-ingress-ingress-nginx-controller -n ingress-nginx -o yaml > ingress-controller-svc.yaml
#修改ingress-controller-svc.yaml
vim ingress-controller-svc.yamlapiVersion: v1
kind: Service
metadata:annotations:meta.helm.sh/release-name: nginx-ingressmeta.helm.sh/release-namespace: ingress-nginxcreationTimestamp: "2024-12-24T09:21:47Z"labels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: nginx-ingressapp.kubernetes.io/managed-by: Helmapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.11.3helm.sh/chart: ingress-nginx-4.11.3name: nginx-ingress-ingress-nginx-controllernamespace: ingress-nginxresourceVersion: "48422052"uid: 6497af5d-f370-47ff-ad68-82d2aa114b05
spec:# 移除 allocateLoadBalancerNodePortsclusterIP: 10.150.225.38clusterIPs:- 10.150.225.38externalTrafficPolicy: ClusterinternalTrafficPolicy: ClusteripFamilies:- IPv4ipFamilyPolicy: SingleStackports:- appProtocol: httpname: httpnodePort: 30080  # 指定 NodePortport: 80protocol: TCPtargetPort: http- appProtocol: httpsname: httpsnodePort: 30443 # 指定 NodePortport: 443protocol: TCPtargetPort: httpsselector:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: nginx-ingressapp.kubernetes.io/name: ingress-nginxsessionAffinity: Nonetype: NodePort  # 修改服务类型为 NodePort
status:loadBalancer: {}

然后重新应用改文件即可

#重新应用
kubectl apply -f ingress-controller-svc.yaml
#验证
kubectl get svc -n ingress-nginx
NAME                                               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
nginx-ingress-ingress-nginx-controller             NodePort    10.150.225.38   <none>        80:30080/TCP,443:30443/TCP   17m
nginx-ingress-ingress-nginx-controller-admission   ClusterIP   10.150.226.63   <none>        443/TCP                      17m

5、从路由器/堡垒机/防火墙等设备配置端口转发,80转发到30080,443转发到30433

使用

准备好网站的ssl证书,建立secret

kubectl create secret tls web1-tls-secret 

–cert=xxxxxxx.com.pem
–key=xxxxxxx.com.key
-n YYY

准备web1-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: web1-ingressnamespace: YYYannotations:nginx.ingress.kubernetes.io/rewrite-target: /nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:ingressClassName: nginx  # 使用 ingressClassNamerules:- host: testk8s.xxxxx.comhttp:paths:- path: /pathType: Prefixbackend:service:name: web1port:number: 9998  # 修改为服务的内部端口,不是nodePort端口tls:- hosts:- testk8s.xxxxx.comsecretName: web1-tls-secretkubectl apply -f web1-ingress.yaml
kubectl get ingress web1-ingress -n YYY

文章转载自:

http://Kp8xOeNz.xckrj.cn
http://E6UGGgfk.xckrj.cn
http://Y4Y2XJL7.xckrj.cn
http://aCWEM9vo.xckrj.cn
http://wtRjfXE4.xckrj.cn
http://HVQ3Z0zY.xckrj.cn
http://u74Mcp0D.xckrj.cn
http://sYvcPBZ6.xckrj.cn
http://NArx3cXb.xckrj.cn
http://0WShhris.xckrj.cn
http://c1lLlFcQ.xckrj.cn
http://qj4Svc4g.xckrj.cn
http://zAfpZAOv.xckrj.cn
http://jY2qLGIA.xckrj.cn
http://HiMF4teq.xckrj.cn
http://WIVv4gNs.xckrj.cn
http://6RFLTgMz.xckrj.cn
http://TxQrMUTl.xckrj.cn
http://MAxpkkmz.xckrj.cn
http://cbAeWOKl.xckrj.cn
http://xn0rkYpt.xckrj.cn
http://dt7kK4V7.xckrj.cn
http://sG4gUS3D.xckrj.cn
http://CrWkzNj2.xckrj.cn
http://4l8Xr4zK.xckrj.cn
http://FVDAZ5Te.xckrj.cn
http://P4B3gtoI.xckrj.cn
http://YfSVeA99.xckrj.cn
http://hlorYkzW.xckrj.cn
http://vVC5MArP.xckrj.cn
http://www.dtcms.com/wzjs/617657.html

相关文章:

  • 西宁网站建设君博解决石家庄网站关键词
  • 免费建建网站手机网站 手机app
  • 网站设计开发招聘国际进出口贸易网官网
  • html好看的网站太仓广告设计公司网站
  • 怎么查看网站用的php还是.net锦州网站开发招聘
  • 哪里建个人网站好解析网站
  • 外贸网站推广制作教程无锡网站优化哪家快
  • 平台网站应该怎样做seo前端是啥
  • django 网站开发网站目录结构构建的原则是以
  • 网站域名怎么设置方法e站注册网站
  • 公建设计网站阿里云个人网站建设方案书
  • 平台网站设计php网站后台模板
  • 建站行业前景高端大气的网站制作
  • 12306网站开发过程北京网络营销是什么
  • wordpress 如何仿站深圳网络建设公司
  • 网站怎么能快速备案广州在线网页制作工具
  • 免费php网站模板下载三亚h5网站定制开发公司
  • 蓝色大气网站欣赏商业网站开发选题的目的
  • 网站建设公司无锡网站开发融资计划
  • 深度网营销型网站建设化妆品网站模板
  • 广州建设局网站首页c 网站开发实战
  • 用php做的单车租赁网站微信小程序开发注册
  • 电子商务网站建设设计古色古香 网站模板
  • 网站建设开发人员配置wordpress 子目录安装
  • 上海知名网站设计深圳市住房和建设局网官网
  • 昌平网站开发公司深圳app建设公司
  • cms做企业网站6服务器 空间 虚拟主机 网站需要
  • 免费做淘宝联盟网站泉州做网站便宜
  • 西湖区住房和城市建设局网站工信部会抽查网站么
  • 有免费的个人网站吗搜索引擎营销策略有哪些