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

光谷网站推广wordpress 别名获取id

光谷网站推广,wordpress 别名获取id,如何制作公司网站,s网站优化service的作用体现在两个方面#xff1a; 集群内部#xff1a;不断追踪pod的变化。他会更新endpoint中的pod对象#xff0c;基于pod的IP地址不断变化的一种服务发现机制。 集群外部#xff1a;类似负载均衡器#xff0c;把流量IP端口#xff0c;不涉及转发url(http、htt…service的作用体现在两个方面 集群内部不断追踪pod的变化。他会更新endpoint中的pod对象基于pod的IP地址不断变化的一种服务发现机制。 集群外部类似负载均衡器把流量IP端口不涉及转发url(http、https)。把请求转发到pod当中。 service有四种类型 ClusterIP创建service的默认类型 NodePort容器端口 service端口 nodeport。 设定了nodeport后每个节点都会有一个端口被打开。 端口范围30000-32767。 访问节点ip30000-32767实现负载均衡 loadbalancer云平台上的一种service服务。云平台提供负载均衡的IP地址 extrenal域名映射。 什么是ingress ingress是一个API对象通过yaml文件进行配置。 ingress的作用是定义请求如何转发到service的规则。相当于一个配置模板 ingress通过http和https暴露集群内部的service。 ingress给service提供外部的URL域名负载均衡以及ssl/tls(加密的https)的能力。实现一个基于域名的负载均衡。 ingress-controller ingress-controller的作用就是具体的实现反向代理和负载均衡的程序。对ingress定义的规则进行解析。根据ingress的配置规则进行请求转发。 ingress-controlle是以pod的方式运行在集群中 ingress-controller不是k8s自带的组件功能。他是一个统称只要这个组件可以实现反向代理和负载均衡可以对ingress进行解析的、可以根据规则请求转发的都是ingress-controller nginx-ingress-controller、traefik都是开源的ingress-controller ingress资源的定义项 1、 定义外部流量的路由规则 2、 定义了服务的暴露方式、主机名、访问路径和其他的选项。 3、 实现负载均衡。这是由ingress-controller实现的。 ingress暴露服务的方式 1、 deploymentLoadBalancer模式这种模式是将ingress部署在公有云。例如华为云、阿里云、腾讯云等 在ingress的配置文件内会有一个type。type会以键值对形式设置 type: LoadBalancer 公有云平台会为 LoadBalancer 的service创建一个负载均衡器。绑定一个公网地址。通过域名指向公网地址。就可以实现集群对外暴露。 2、 DaemonSethostnetworknodeSelector模式 其中DaemonSet会在每个节点创建一个pod。 hostnetwork表示pod和节点主机共享网络命名空间。容器内可以直接使用节点主机的IP端口。pod中的容器可以直接访问主机上的网络资源。 nodeSelector根据标签来选择部署的节点。nginx-ingress-controller部署的节点。 缺点直接利用节点主机的网络和端口。一个node之内部署一个ingress-controller pod。 DaemonSethostnetworknodeSelector模式性能最好比较适合大并发的生产环境。 ingress的数据流向图 客户端发起请求域名将先到DNS DNS开始解析域名。映射到ingress-controller所在的节点 ingress-controller以pod形式运行在节点上。hostnetwork可以和节点主机共享网络 ingress的配置来定义URL的地址 根据ingress的标签匹配将请求转发到service service寻找endpoints发现匹配能够转发的pod 最终还是由ingress-controller将(http/https)请求转发到不同的pod上。实现负载均衡 service和endpoints在这里起发现和监控的总用 实际的负载均衡由ingress-controller实现 DaemonSethostnetworknodeSelector模式如何实现 实验部署 master01 20.0.0.32 node01 20.0.0.34 node02 20.0.0.35master01-- 修改ingress的yaml文件 vim mandatory.yaml 191 #kind: Deployment 192 kind: DaemonSet 200 # replicas: 1 215 hostNetwork: true 220 test1: true每台节点主机都添加nginx-ingress-controller镜像 tar -xf ingree.contro-0.30.0.tar.gz docker load -i ingree.contro-0.30.0.tarmaster01-- kubectal get pod -n ingress-nginxkubectl label nodes node02 ingresstruekubectl apply -f mandatory.yamlmaster01--- vim nginx.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: nfs-pvc spec:accessModes:- ReadWriteManystorageClassName: nfs-client-storageclassresources:requests:storage: 2Gi--- #定义pod apiVersion: apps/v1 kind: Deployment metadata:name: nginx-applabels:app: nginx1 spec:replicas: 3selector:matchLabels:app: nginx1template:metadata:labels:app: nginx1spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: nfs-pvcmountPath: /usr/share/nginx/htmlvolumes:- name: nfs-pvcpersistentVolumeClaim:claimName: nfs-pvc--- #定义serviceapiVersion: v1 kind: Service metadata:name: nginx-app-svc spec:ports:- protocol: TCPport: 80targetPort: 80selector:app: nginx1--- #定义ingressapiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: nginx-app-ingress spec:rules:- host: www.test1.comhttp:paths:- path: / #匹配工作目录的根目录pathType: Prefix #根据前缀进行匹配 只要是/开头的都可以匹配到例如/ www.test1.com/www1/www2/www3backend: #指定后台服务器service:name: nginx-app-svcport:number: 80 vim /etc/hosts 20.0.0.32 master01 20.0.0.34 node01 20.0.0.35 node02 www.test1.com 20.0.0.36 hub.test.com k8s5 #做域名和地址映射k8s5--- 进入挂载卷之后 echo 123 index.htmlmaster01--- curl www.test1.com #测试网页是否可以访问 实验完成 创建地址映射 回到k8s主机查看共享目录是否生成 测试访问是否成功 8181端口nginx-controller默认配置的一个bachend。反向代理的端口。 所有请求当中。只要是不符合ingress配置的请求就会转发到8181端口 deploymentNodePort模式 deploymentNodePort的数据流向图 实验部署 master01--- vim mandatory.yaml 191 kind: Deployment 215 #hostNetwork: true 200 replicas: 1 219 kubernetes.io/os: linux 220 #test1: truekubectl apply -f mandatory.yaml wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml #获取service.yaml文件vim service-nodeport.yaml apiVersion: v1 kind: Service metadata:name: ingress-nginxnamespace: ingress-nginxlabels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginx spec:type: NodePortports:- name: httpport: 80targetPort: 80protocol: TCP- name: httpsport: 443targetPort: 443protocol: TCPselector:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginx #执行这个yaml文件会生成一个service。在ingress-nginx这个命名空间生成一个service。 #所有的controller的请求都会从这个定义的service的nodeport的端口。 #把请求转发到自定义的service的podkubectl apply -f service-nodeport.yamlvim nodeport.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: nfs-pvc2 spec:accessModes:- ReadWriteManystorageClassName: nfs-client-storageclassresources:requests:storage: 2Gi--- apiVersion: apps/v1 kind: Deployment metadata:name: nginx-app2labels:app: nginx2 spec:replicas: 3selector:matchLabels:app: nginx2template:metadata:labels:app: nginx2spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: nfs-pvc2mountPath: /usr/share/nginx/htmlvolumes:- name: nfs-pvc2persistentVolumeClaim:claimName: nfs-pvc2 --- apiVersion: v1 kind: Service metadata:name: nginx-app-svc1 spec:ports:- protocol: TCPport: 80targetPort: 80selector:app: nginx2 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: nginx-app-ingress spec:rules:- host: www.test2.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-app-svc1port:number: 80kubectl apply -f nodeport.yamlk8s5--- 查看挂载目录 echo 123 index.htmlmaster01--- vim /etc/hosts 20.0.0.32 master01 20.0.0.34 node01 20.0.0.35 node02 www.test1.com www.test2.com 20.0.0.36 hub.test.com k8s5 www.test1.comcurl www.test2.com:31456 实验完成 nodeport不再是deployment的service创建的 而是由ingress创建的 url请求先到ingress ingress根据标签匹配ingress-nodeport 通过标签寻找指定的service 最终由service找到deployment 核心的控制组件时nginx-ingress-controller host----ingress的配置找到pod----controller----把请求发到pod nodeport-----controller-----ingress----service----pod nodeport暴露端口的方式是最简单的。nodeport多了一层net(地址转换) 并发量大的对性能会有一定影响。内部都会用nodeport 通过虚拟主机的方式实现http代理 通过ingress的方式实现一个ingress可以访问不同的主机 实验举例 vim pod1.yaml apiVersion: apps/v1 kind: Deployment metadata:name: deployment1labels:test: nginx1 spec:replicas: 1selector:matchLabels:test: nginx1template:metadata:labels:test: nginx1spec:containers:- name: nginx1image: nginx:1.22--- apiVersion: v1 kind: Service metadata:name: svc-1 spec:ports:- port: 80targetPort: 80protocol: TCPselector:test: nginx1vim pod2.yaml apiVersion: apps/v1 kind: Deployment metadata:name: deployment1labels:test2: nginx2 spec:replicas: 1selector:matchLabels:test2: nginx2template:metadata:labels:test2: nginx2spec:containers:- name: nginx2image: nginx:1.22--- apiVersion: v1 kind: Service metadata:name: svc-2 spec:ports:- port: 80targetPort: 80protocol: TCPselector:test2: nginx2vim pod-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: ingress1 spec:rules:- host: www.test1.comhttp:paths:- path: /pathType: Prefixbackend:service:name: svc-1port:number: 80--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: ingress2 spec:rules:- host: www.test2.comhttp:paths:- path: /pathType: Prefixbackend:service:name: svc-2port:number: 80 kubectl apply -f pod.yaml kubectl apply -f pod2.yaml kubectl apply -f pod-ingress.yamlvim /etc/hosts 20.0.0.32 master01 20.0.0.34 node01 www.test1.com www.test2.com 20.0.0.35 node02 www.test1.com www.test2.com 20.0.0.36 hub.test.com k8s5 www.test1.comcurl www.test1.com:31456 curl www.test2.com:31456 访问成功实验完成 daemonsethostnetworknodeselector实现访问多个主机 实验举例 vim daemoset-hostnetwork-nodeselector1.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata:name: nfs-pvc1 spec:accessModes:- ReadWriteManystorageClassName: nfs-client-storageclassresources:requests:storage: 2Gi--- apiVersion: apps/v1 kind: Deployment metadata:name: nginx-app1labels:app: nginx1 spec:replicas: 1selector:matchLabels:app: nginx1template:metadata:labels:app: nginx1spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: nfs-pvc1mountPath: /usr/share/nginx/htmlvolumes:- name: nfs-pvc1persistentVolumeClaim:claimName: nfs-pvc1 --- apiVersion: v1 kind: Service metadata:name: nginx-app-svc1 spec:ports:- protocol: TCPport: 80targetPort: 80selector:app: nginx1 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: nginx-app-ingress1 spec:rules:- host: www.test1.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-app-svc1port:number: 80kubectl apply -f daemoset-hostnetwork-nodeselector1.yamlvim daemoset-hostnetwork-nodeselector2.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: nfs-pvc2 spec:accessModes:- ReadWriteManystorageClassName: nfs-client-storageclassresources:requests:storage: 2Gi--- apiVersion: apps/v1 kind: Deployment metadata:name: nginx-app2labels:app: nginx2 spec:replicas: 1selector:matchLabels:app: nginx2template:metadata:labels:app: nginx2spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: nfs-pvc2mountPath: /usr/share/nginx/htmlvolumes:- name: nfs-pvc2persistentVolumeClaim:claimName: nfs-pvc2 --- apiVersion: v1 kind: Service metadata:name: nginx-app-svc2 spec:ports:- protocol: TCPport: 80targetPort: 80selector:app: nginx2 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: nginx-app-ingress2 spec:rules:- host: www.test2.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-app-svc2port:number: 80kubectl apply -f daemoset-hostnetwork-nodeselector2.yamlvim mandatory.yaml 192 kind: DaemonSet 200 #replicas: 1 215 hostNetwork: true 219 #kubernetes.io/os: linux 220 test1: truekubectl apply -f mandatory.yamlcurl www.test1.com curl www.test2.com 实验完成 通过虚拟主机的方式实现http代理 通过ingress的方式实现一个ingress可以访问不同的主机 实验举例 vim pod1.yaml apiVersion: apps/v1 kind: Deployment metadata:name: deployment1labels:test: nginx1 spec:replicas: 1selector:matchLabels:test: nginx1template:metadata:labels:test: nginx1spec:containers:- name: nginx1image: nginx:1.22--- apiVersion: v1 kind: Service metadata:name: svc-1 spec:ports:- port: 80targetPort: 80protocol: TCPselector:test: nginx1vim pod2.yaml apiVersion: apps/v1 kind: Deployment metadata:name: deployment1labels:test2: nginx2 spec:replicas: 1selector:matchLabels:test2: nginx2template:metadata:labels:test2: nginx2spec:containers:- name: nginx2image: nginx:1.22--- apiVersion: v1 kind: Service metadata:name: svc-2 spec:ports:- port: 80targetPort: 80protocol: TCPselector:test2: nginx2vim pod-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: ingress1 spec:rules:- host: www.test1.comhttp:paths:- path: /pathType: Prefixbackend:service:name: svc-1port:number: 80--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: ingress2 spec:rules:- host: www.test2.comhttp:paths:- path: /pathType: Prefixbackend:service:name: svc-2port:number: 80 kubectl apply -f pod.yaml kubectl apply -f pod2.yaml kubectl apply -f pod-ingress.yamlvim /etc/hosts 20.0.0.32 master01 20.0.0.34 node01 www.test1.com www.test2.com 20.0.0.35 node02 www.test1.com www.test2.com 20.0.0.36 hub.test.com k8s5 www.test1.comcurl www.test1.com:31456 curl www.test2.com:31456 访问成功实验完成 ingress实现https代理访问 https拥有证书和密钥。 需要创建证书和密钥 secrets保存密钥信息。部署pod时把secrets挂载到pod 实验举例 openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj /CNnginxsvc/Onginxsvc #req生成证书文件命令 #x509生成x.509自签名的证书 #-sha256表示使用shaa-256的散列算法 #-nodes表示生成的密钥不加密 #-days 365证书有效期是365天 #-newkey rsa:2048表示使用RSA的密钥队长度是2048位 #-keyout tls.key生成密钥文件 #-out tls.crt生成证书文件 #-subj /CNnginxsvc/Onginxsvc表示添加一个主题 #CNcommon name 名称 #O表示organization组织kubectl create secret tls tls-secret --key tls.key --cert tls.crt #创建secret保存密钥和证书vim ingress-https.yaml #定义pod apiVersion: apps/v1 kind: Deployment metadata:name: nginx-httpslabels:app: https spec:replicas: 3selector:matchLabels:app: httpstemplate:metadata:labels:app: httpsspec:containers:- name: nginximage: nginx:1.22--- #定义service apiVersion: v1 kind: Service metadata:name: nginx-svc spec:ports:- port: 80targetPort: 80protocol: TCPselector:app: https--- #定义ingress和加密key apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: nginx-ingress-https spec:tls:- hosts:- www.123ccc.comsecretName: tls-secret #加密的配置保存在ingress当中 #请求---ingress-controller---ingress---转发到service #目的是为了先验证通过再实现转发到service对应的pod #在代理进行时就要先验证密钥队然后再把请求转发到service对应的podrules:- host: www.123ccc.comhttp:paths:- path: /pathType: Prefixbackend: #定义使用那个service的名称service:name: nginx-svc #定义使用那个pod的名称port:number: 80kubectl apply -f ingress-https.yamlkubectl get svc -n ingress-nginx -o widecurl -k https://www.123ccc.com:端口号 https方式同样可以实现负载均衡轮询 内部DNS解析、地址映射 外部收费 nginx的登录账户认证 实验举例 htpasswd -c auth zyg New password: 123456 Re-type new password: 123456kubectl create secret generic basic-auth --from-fileauthvim basic-auth.yamlapiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: ingress-authannotations: #开启认证模块的配置nginx.ingress.kubernetes.io/auth-type: basic #设置认证类型为basic。是k8s自带的认证加密模块nginx.ingress.kubernetes.io/auth-secret: basic-auth #把认证的加密模块导入到ingress当中nginx.ingress.kubernetes.io/auth-realm: Authentication Required-zyg #设置认证窗口的提示信息。 spec:rules:- host: www.zyg.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80 #使用http创建basic-auth #开启认证加密的文件 #创建ingress开启认证模式 #将auth配置文件导入ingress当中 在虚拟机访问测试 nginx的重写重定向 实验举例 vim nginx-rewite.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: nginx-rewriteannotation:nginx.ingress.kubernetes.io/rewrite-target: https://www.123ccc.com:30416 #访问页面会跳转到指定页面 spec:rules:- host: www.zyg1.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80 #只要访问www.zyg.com:端口号就可以跳转到www.123ccc.com:端口号 kubectl apply -f nginx-rewite.yaml traefik ingress controller traefik是一个为了让部署微服务更加快捷而诞生的http的反向代理负载均衡。是七层代理工作在应用层和nginx-ingress-controller一样 traefik可以实时的和k8s的api进行交互可以感知后端servic以及pod的变化。可以自动更新配置和重载。 traefik它可以自动感知后端的变化 traefik的部署方式 daemonset方式 deployment方式 daemonset方式的特点 daemonset方式一般用于对外集群 因为对外的业务经常变更使用daemonset可以自动发现服务配置所以用于对外 设置对外服务的标签traefik-type: external 每个节点都会部署一个traefik 具有节点感知功能。可以自动发现、更新容器的配置。不需要手动重载。可以直接生效 缺点资源占用较多。资源利用率不是很好。无法扩缩容。 大型的集群中daemonset可能会运行多个traefik的实例。尤其是在节点上不需要大量容器运行的情况下。 deployment方式的特点 deployment方式一般用于对内集群 因为集群内部相对稳定更新和变化也比较少适合deployment 设置对内服务标签traefik-type: internal 集中办公控制可以使用少量的实例来运行处理整个集群的流量 容易升级和维护 缺点deployment的负载均衡不会均分到每个节点。 他无法感知容器内部配置的变化需要手动更新 nginx-ingress和traefik-ingress的区别 相同点 工作原理一样。都是七层代理 都可以动态更新配置 都可以自动发现服务 traefik-ingress的自动更新重载更快更方便 nginx-ingress相对较慢 traefik-ingress的并发能力只有nginx-ingress的6成 60% deployment方式 实验举例 先启动rbac权限再启动deployment最后启动uivim traefik-ingress-nginx.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-traefiklabels:nginx: traefik spec:replicas: 3selector:matchLabels:nginx: traefiktemplate:metadata:labels:nginx: traefikspec:containers:- name: nginximage: nginx:1.22--- apiVersion: v1 kind: Service metadata:name: nginx-traefik-svc1 spec:ports:- port: 80targetPort: 80protocol: TCPselector:nginx: traefik--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: nginx-traefik-test1 spec:rules:- host: www.yyw.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-traefik-svc1port:number: 80到浏览器访问测试20.0.0.32:31095 测试自动发现机制 修改yaml文件中的副本数测试 总结 ingress的类型 nginx-ingress-controller traefik-ingress-controller 这两个都是开源的控制器 nginx-ingress-controller控制器三种模式 deploymentloadbalancer公有云提供负载均衡的公网地址 daemonsethostnetworknodeselector和节点服务共享网络一个节点一个controller pod。使用宿主机的端口性能最好适合大并发 deploymentnodeport最常见也是最常用也是最简单的方法。但是性能不太好多了一层nat地址转发。 适用于高并发、大集群使用 traefik-ingress-controller控制器模式 daemonset对外开源自动更新容器配置。使用hostnetwork模式 使用节点网络 deployment对内 无法自动更新配置。使用nodeport模式。 适用于小集群 https 生成证书和密钥 创建secret保存证书和密钥 加密认证 htpasswd -c auth认证文件只能是auth 创建ingress时指定认证的类型、导入密钥文件、最后加上密钥信息 定义ingress的规则 annotations: #开启认证模块的配置nginx.ingress.kubernetes.io/auth-type: basic #设置认证类型为basic。是k8s自带的认证加密模块nginx.ingress.kubernetes.io/auth-secret: basic-auth #把认证的加密模块导入到ingress当中nginx.ingress.kubernetes.io/auth-realm: Authentication Required-zyg #设置认证窗口的提示信息。 重定向 在指定的ingres文件当中声明的url都会跳转到这个地址 nginx.ingress.kubernetes.io/rewrite-target: https://www.123ccc.com:30416 #在指定的ingres文件当中声明的url都会跳转到这个地址
http://www.w-s-a.com/news/903036/

相关文章:

  • 南雄市建设局网站搜索关键词的方法
  • 网站建设维护工作经验深圳定制展会
  • 新闻类网站备案WordPress评论昵称显示错误
  • 如何建立一个个人网站自己做一个购物网站
  • 吴忠网站建设公司中国建筑股份有限公司 官网
  • 深圳电商网站开发公司page list wordpress
  • 长安外贸网站建设顺德区网站设计建设企业
  • 临沂市建设局网站简介专业建设网站开发
  • 肇庆网站制作设计中国企业500强招聘
  • 苏州厂房装修宁波seo网络推广外包报价
  • 文山知名网站建设惠州哪家做网站好
  • 物流网站风格网站登录密码保存在哪里设置
  • 免费网站怎么建立icodepython基础教程
  • 无障碍网站建设方案wordpress 任务管理系统
  • iis5.1发布网站中小企业网络营销存在的问题研究论文
  • 阳泉软件定制网站建设网站可以做多语言的吗
  • 建设网站的目的及功能定位主要包括哪些内容百度关键词优化
  • 开一个小程序要多少钱宁波seo网络推广外包报价
  • 网站备案最新备案号电子商务网站建设的规章制度
  • wordpress制作单页网站导航页面鞍山信息港招聘信息
  • 屏蔽ip地址访问网站自己做衣服的网站
  • 网站建设 域名业务 邮箱哪里有网站建设中心
  • 免费网站赚钱重庆建设摩托车股份有限公司
  • 合肥水运建设工程监理网站自己买服务器能在wordpress建网站
  • wordpress积分商城主题整站seo排名要多少钱
  • 鲜花网站建设的利息分析网站设计与制作专业
  • 深圳网站建设排名做网站的公司高创
  • 杭州哪家做外贸网站全国物流网站有哪些平台
  • 企业网站建设个人博客鞍山晟宇网站建设
  • 广东省自然资源厅网站h5移动端网站模板下载