服务好的公司网站建设与维护做男鞋的网站

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

服务好的公司网站建设与维护,做男鞋的网站,page转wordpress,wordpress添加new首先附上K8S版本及Ingress版本对照 Ingress介绍 NotePort#xff1a;该方式的缺点是会占用很多集群机器的端口#xff0c;当集群服务变多时#xff0c;这个缺点就愈发的明显(srevice变多#xff0c;需要的端口就需要多) LoadBalancer#xff1a;该方式的缺点是每个servi…首先附上K8S版本及Ingress版本对照 Ingress介绍 NotePort该方式的缺点是会占用很多集群机器的端口当集群服务变多时这个缺点就愈发的明显(srevice变多需要的端口就需要多) LoadBalancer该方式的缺点是每个service都需要一个外部负载均衡设备的支持才可以 基于这种现状k8s提供了ingress资源对象。 ingress只需要一个NodePort/一个负载均衡设备就可以满足暴露多个service的需求 实际上Ingress相当于一个7层的负载均衡器在生产环境中常用的Ingress有Treafik、Nginx、HAProxy、Istio等是k8s对反向代理的一个抽象它的工作原理类似于Nginx可以理解成Ingress里建立诸多映射规则Ingress Colltroller通过监听这些配置规则并转化成Nginx的反向代理配置然后对外部提供服务在这里有两个核心理念

  • Ingressk8s中的一个对象作用是定义请求如何转发到service的规则定义转发规则- Ingress controller具体实现反向代理及负载均衡的程序对Ingress定义的规则进行解析。 根据配置的规则来实现请求转发实现方式有很多比如NginxContourHaproxy等等 Ingress的工作原理 ingress-controller通过和 kubernetes APIServer 交互动态的去感知集群中ingress规则变化 然后读取它按照自定义的规则规则就是写明了哪个域名对应哪个service生成一段nginx配置 再写到nginx-ingress-controller的pod里这个ingress-controller的pod里运行着一个Nginx服务控制器会把生成的 nginx配置写入 /etc/nginx.conf文件中 然后reload一下使配置生效。以此达到域名区分配置和动态更新的作用。 kubernetes ingress-nginx部署 我这里的K8S版本为1.23.5对应的安装ingress-nginx-1.6.4; 下载对应部署文件deploy.yaml(这一步需要魔法没有的可以从下链接提取) 同时为了方便后续http和https的分辨固定端口为31080和31443 未修改版本 https://pan.baidu.com/s/1FJ3ai_5YQYypKi72HhpGqg?pwdweiy  提取码weiy 已修改版本 https://pan.baidu.com/s/1CF5UJ8aQy-IDvpv9r2RYuQ?pwdweiy  提取码weiy 注意80对应的是HTTP端口443对应的是HTTPS端口 部署文件上传后需要注意切换为国内镜像地址修改成国内可以下载的相同镜像 一共需要修改三处镜像 具体修改如下 image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20220916-gd32f8c343sha256:39c5b2e3310dc4264d638ad28d9d1d96c4cbb2b2dcfb52368fe4e3c63f61e10f 将其改为 dyrnq/kube-webhook-certgen:v20220916-gd32f8c343 image: registry.k8s.io/ingress-nginx/controller:v1.6.4sha256:15be4666c53052484dd2992efacf2f50ea77a78ae8aa21ccd91af6baaa7ea22f 将其修改为 registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.6.4 部署Ingress [rootmaster ~]# mkdir /ingress-controller [rootmaster ~]# cd /ingress-controller [rootmaster ~]# ls [rootmaster ingress-controller]# kubectl apply -f ./ 正常为created我先前已经apply  1、查看ns会有一个ingress-nginx的名称空间产生 2、查看ingress-nginx名称空间的pod  [rootmaster ingress-controller]# kubectl get po -n ingress-nginx 3、查看service [rootmaster ingress-controller]# kubectl get svc -n ingress-nginx 4、部署tomcat与nginx的pod通过tomcat-nginx.yml文件创建 [rootk8s-master ~]# cattomcat-nginx.yml EOF — apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deploymentnamespace: dev spec:replicas: 1selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.18ports:- containerPort: 80nodeName: node2 — apiVersion: apps/v1 kind: Deployment metadata:name: tomcat-deploymentnamespace: dev spec:replicas: 1selector:matchLabels:app: tomcat-podtemplate:metadata:labels:app: tomcat-podspec:containers:- name: tomcatimage: tomcat:8.5-jre10-slimports:- containerPort: 8080nodeName: node2 — apiVersion: v1 kind: Service metadata:name: nginx-servicenamespace: dev spec:ports:- port: 80name: nginxclusterIP: Noneselector:app: nginx-pod — apiVersion: v1 kind: Service metadata:name: tomcat-servicenamespace: dev spec:selector:app: tomcat-podtype: ClusterIPports:- protocol: TCPport: 80targetPort: 8080 EOF 这里我固定了调度的node为node2 5、创建svc与pod [rootmaster ~]# kubectl create -f tomcat-nginx.yml 6、查看svc信息 [rootmaster ~]# kubectl get svc -n dev 7、查看pod信息 [rootmaster ~]# kubectl get po -n dev Ingress-HTTP代理 通过ingress代理http服务创建ingress-http.yml  [rootmaster ~]# vim ingress-http.yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: ingress-httpnamespace: dev spec:ingressClassName: nginxrules:- host: www.nginx.comhttp: #访问的方式是以http的形式paths:- backend:service:name: nginx-service #用户在访问域名的时候会反向代理给service也就是后面的podservice是通过标签去代理的port: number: 80path: /pathType: ImplementationSpecific- host: www.tomcat.comhttp:paths:- backend:service:name: tomcat-serviceport: number: 80path: /pathType: ImplementationSpecific 1、创建ingress [rootmaster ~]# kubectl create -f ingress-http.yml 2、查看ingress信息 [rootmaster ~]# kubectl get ing ingress-http -n dev 3、查看详细描述 [rootmaster ~]# kubectl describe ing ingress-http -n dev 测试HTTP代理 浏览器访问由于域名无法正常解析需要在windows内进行解析 C:\Windows\System32\drivers\etc 添加解析 Ingress-HTTPS代理 1、生成证书 [rootmaster ~]# openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj /CCN/STTJ/Onginx/CNthinkmo.com -req是证书请求的子命令 -newkey rsa:2048 -keyout tls.key  -newkey是与-key互斥的 -newkey是指在生成证书请求或者自签名证书的时候自动生成密钥 -nodes 表示私钥不加密 -out 指定生成的证书请求或者自签名证书名称 -days 365  证书有效期 若执行自动输入可使用-subj选项-subj——证书相关的用户信息(subject的缩写) 2、创建密钥 [rootmaster ~]# kubectl create secret tls tls-secret –key tls.key –cert tls.crt 创建ingress-https-test.yml [rootmaster ~]# vim ingress-https-test.yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: ingress-httpsnamespace: dev spec:tls:- hosts:- www.nginx.com- www.tomcat.comsecretName: tls-secretrules:- host: www.nginx.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-serviceport:number: 80- host: www.tomcat.comhttp:paths:- path: /pathType: Prefixbackend:service:name: tomcat-serviceport:number: 8080 3、创建ingress [rootmaster ~]# kubectl create -f ingress-https-test.yml ingress.extensions/ingress-https created [rootmaster ~]#  kubectl get ing ingress-https -n dev 4、查看详细信息 5、访问测试 https://www.nginx.com:31443/ https://www.tomcat.com:31443/