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

哪些网站是单页面网站制作公司昆明

哪些网站是单页面,网站制作公司昆明,阿里巴巴网站是用什么技术做的,网络公司取名字参考大全文章目录 一、Igress是什么二、安装Igress Controller三、Service NodePort模式暴露Ingress Controller四、创建ingress 进行访问查看ingress controller生成的规则(两种类型通用) 五、HostNetwork模式暴露Ingress Controller总结#xff1a; 一、Igress是什么 一般负载均衡器… 文章目录 一、Igress是什么二、安装Igress Controller三、Service NodePort模式暴露Ingress Controller四、创建ingress 进行访问查看ingress controller生成的规则(两种类型通用) 五、HostNetwork模式暴露Ingress Controller总结 一、Igress是什么 一般负载均衡器分为 四层传输层基于ip和端口进行转发例如lvs、nginx、haproxy 七层应用层基于应用层协议进行转发的例如http可以根据域名、url等转发例如nginx、haproxy Service NodePort存在的不足 一个端口只能由一个服务使用端口需要提前规划只支持4层负载均衡(ip:port) ingress可以实现集群中全局的负载均衡只需一个到两个端口来实现分别为 80443为集群提供一个统一的访问入口也可以基于url、域名实现七层的负载均衡技术来进行给应用分流 进而转发到不同的services上 ingressk8s中的一个抽象资源给管理员提供一个暴露应用的入口定义方法ingress Controller根据Ingress生成具体的路由规则并对pod进行负载均衡 PsIngress Controller是基于域名进行分流的 二、安装Igress Controller Ingress controller默认在k8s中是没有部署的 Ingress controller有很多实现我们这里采用官方维护的基于Nginx实现的控制器 项目地址https://github.com/kubernetes/ingress-nginx 文档https://kubernetes.github.io/ingress-nginx/deploy/ 其他控制器里面有k8s所支持的控制器的集合https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/ 项目地址里会有各个ingress版本所支持的k8s版本及nginx的版本 在部署ingress的时候需要看下与自己k8s版本的兼容情况以避免部署不起来 然后在项目地址里点击Getting Started 或者直接点击上面的文档地址来进行选择部署ingress controller这里我们选择自建k8s集群的方式来部署 1.下载ingress的yml文件 [rootk8s-master ~]# wget -c https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.3.0/deploy/static/provider/baremetal/deploy.yaml #下载其它版本的话直接修改中间的版本号就行 [rootk8s-master1 ~]# mv deploy.yaml ingress-controller.yaml2.修改ingress配置 1需要将镜像地址registry.k8s.io修改为国内的lank8s.cn否则会下不了镜像 [rootk8s-master ~]# grep -r image: deploy.yaml image: registry.k8s.io/ingress-nginx/controller:v1.3.0sha256:d1707ca76d3b044ab8a28277a2466a02100ee9f58a86af1535a3edf9323ea1b5image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.1.1sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.1.1sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660 [rootk8s-master ~]# mv deploy.yaml ingress-controller.yaml [rootk8s-master ~]# grep -r image: ingress-controller.yaml image: registry.k8s.io/ingress-nginx/controller:v1.3.0sha256:d1707ca76d3b044ab8a28277a2466a02100ee9f58a86af1535a3edf9323ea1b5image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.1.1sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.1.1sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660 [rootk8s-master ~]# sed -i s/registry.k8s.io/lank8s.cn/g ingress-controller.yaml [rootk8s-master ~]# grep -r image: ingress-controller.yaml image: lank8s.cn/ingress-nginx/controller:v1.3.0sha256:d1707ca76d3b044ab8a28277a2466a02100ee9f58a86af1535a3edf9323ea1b5image: lank8s.cn/ingress-nginx/kube-webhook-certgen:v1.1.1sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660image: lank8s.cn/ingress-nginx/kube-webhook-certgen:v1.1.1sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660修改完镜像地址后需要选择下面一种暴露ingress controller方式来进行部署(正常情况下HostNetwork模式居多) 三、Service NodePort模式暴露Ingress Controller Service NodePort暴露Ingress Controller ingress controller是以k8s pod的方式进行部署的我们可以使用service nodeport的方式来随机生成或指定暴露端口来将请求转发到ingress controller上ingress controller就会根据我们创建的ingress规则来转发至相应的pod上 当我们下载好ingress的配置文件后它默认使用的就是NodePort类型来暴露自己pod的80和443端口也就是一个service暴露多个端口 ingress controller使用的是Depolyment进行部署的默认的副本数为1 其实使用NodePort方式进行部署ingress是不需要对配置文件进行改动的直接下载下来apply部署一下就可以 [rootk8s-master ~]# kubectl apply -f ingress-controller.yaml #默认会将ingress controller给我部署到ingress-nginx这个命名空间下 namespace/ingress-nginx created serviceaccount/ingress-nginx created serviceaccount/ingress-nginx-admission created role.rbac.authorization.k8s.io/ingress-nginx created role.rbac.authorization.k8s.io/ingress-nginx-admission created clusterrole.rbac.authorization.k8s.io/ingress-nginx created clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created rolebinding.rbac.authorization.k8s.io/ingress-nginx created rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created configmap/ingress-nginx-controller created service/ingress-nginx-controller created service/ingress-nginx-controller-admission created deployment.apps/ingress-nginx-controller created job.batch/ingress-nginx-admission-create created job.batch/ingress-nginx-admission-patch created ingressclass.networking.k8s.io/nginx created validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created[rootk8s-master ~]# kubectl get pod -n ingress-nginx NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-9qfbs 0/1 Completed 0 2d18h ingress-nginx-admission-patch-w2252 0/1 Completed 2 2d18h ingress-nginx-controller-dc9c4bf8f-9nl2t 1/1 Running 0 2d18h当ingress启动之后我们可以查看下它暴露的端口 [rootk8s-master ~]# kubectl get pod,svc -n ingress-nginx NAME READY STATUS RESTARTS AGE pod/ingress-nginx-admission-create-9qfbs 0/1 Completed 0 2d18h pod/ingress-nginx-admission-patch-w2252 0/1 Completed 2 2d18h pod/ingress-nginx-controller-dc9c4bf8f-9nl2t 1/1 Running 0 2d18hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/ingress-nginx-controller NodePort 10.96.212.26 none 80:32337/TCP,443:31950/TCP 2d18h service/ingress-nginx-controller-admission ClusterIP 10.110.231.235 none 443/TCP 2d18h可以看到ingress暴露的端口为32337和31950分别对应着它容器内部的80和443端口当请求到ingress-controller上时 会把请求转发到相应的pod上 四、创建ingress 进行访问 官方创建ingress配置示例https://kubernetes.io/docs/concepts/services-networking/ingress/ 或者通过命令来进行创建示例 例 [rootk8s-master ~]# kubectl create ingress --help Usage:kubectl create ingress NAME --rulehost/pathservice:port[,tls[secret]] [options] [rootk8s-master ~]# kubectl create ingress web1 --rulehost/pathweb:80 --dry-runclient -o yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:creationTimestamp: nullname: web1 spec:rules:- host: hosthttp:paths:- backend:service:name: webport:number: 80path: /pathpathType: Exact status:loadBalancer: {}1.这里使用官方示例来进行创建ingress [rootk8s-master ~]# vim web-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: web spec:#指定ingress控制器类型为nginx不同的控制器表示不一样可以查看官方文档进行查阅ingressClassName: nginxrules:#指定请求的域名- host: web.study.comhttp:paths:#指定请求的路径- path: /pathType: Prefixbackend:#指定要暴露的应用(Pod)的service,所以使用ingress之前是一定要先创建service的,它是基于service来发现这一组要被请求的pod的service:name: web#指定要暴露的service的内部port端口port:number: 80[rootk8s-master ~]# kubectl apply -f web-ingress.yaml ingress.networking.k8s.io/web created2.使用apply来创建ingress并进行访问 创建ingress后ingress controller会基于nginx来自动生成ingress转发规则 [rootk8s-master ~]# kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS AGE web nginx web.study.com 80 13s测试访问: 因为我们使用的是NodePort的方式部署的ingress controller使用当我们要去访问ingress的时候也需要使用Service NodeProt的方式去访问 ingress controller暴露的端口为80:32337/TCP,443:31950/TCP 又因为我们上面创建ingress 的时候绑定了域名应该使用域 名:nodeport(80:32337/TCP,443:31950/TCP)进行去访问 例如 web.study.com:32337 注如果这里配置的域名可以直接解析到公网IP的话直接访问就行了如果是个人学习环境 解析不到的话就需要在本地电脑绑定hosts记录对应着ingress里面配置的域名 例 NodeIP web.study.com 查看ingress controller生成的规则(两种类型通用) 因为这里使用的是nginx类型的ingress控制器ingress-nginx所以我们可以进入到这个ingress控制器里查看生成的nginx配置(ingress规则) [rootk8s-master ~]# kubectl get pod -n ingress-nginx NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-9qfbs 0/1 Completed 0 3d17h ingress-nginx-admission-patch-w2252 0/1 Completed 2 3d17h ingress-nginx-controller-dc9c4bf8f-9nl2t 1/1 Running 0 3d17h[rootk8s-master ~]# kubectl exec -it pod/ingress-nginx-controller-dc9c4bf8f-9nl2t -n ingress-nginx /bin/bash bash-5.1$ vi /etc/nginx/nginx.conf可以看到如下ingress controller会帮我们自动生成一个nginx的虚拟主机server的配置也就是在这里会基于这个域名来进行分流 ## start server web.study.com server { server_name web.study.com ;listen 80 ;...## end server web.study.com 五、HostNetwork模式暴露Ingress Controller Service NodePort 模式暴露Ingress的痛点 由于NodePort模式进行访问时需要域名加端口(web.study.com:32337)来进行访问先是经过Service NodePort转发到ingress controller上再由ingress controller转发到pod上而且一个请求流的过程 太过繁琐使用共享宿主机网络模式整体流程会更加清晰 共享宿主机网络hostNetwork:True 指定ingress controller这个pod保持跟宿主机的网络保持一致用同一个网络命名空间这样我们访问node节点就是相当于请求到了ingress controller里再根据我们设置的ingress规则来转发至相应的pod上 1.共享宿主机模式部署ingress controller apiVersion: apps/v1 kind: Deployment ...spec: #共享宿主机的网络协议栈(不给ingress controller分配独立的网路命名空间与宿主机网络命名空间共享)hostNetwork: True#将Pod调度到指定的Node上不经过调度器#nodeName: k8s-master#根据标签控制pod在哪个node节点上受scheduler调度器控制例如有污点便不能调度#例如将pod调度到含有[test-label-ingress-controller: true]标签的节点上#nodeSelector: # test-label-ingress-controller: true containers:- args:- /nginx-ingress-controller...修改完后apply重新应用ingress controller控制器 [rootk8s-master ~]# kubectl apply -f ingress-controller.yaml [rootk8s-master ~]# kubectl get pod -n ingress-nginx -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ingress-nginx-admission-create-9qfbs 0/1 Completed 0 7d17h 10.244.36.65 k8s-node1 none none ingress-nginx-admission-patch-w2252 0/1 Completed 2 7d17h 10.244.107.193 k8s-node3 none none ingress-nginx-controller-55b4c7fdcf-68stc 1/1 Running 0 7m24s 192.168.1.1 k8s-master none none #此时已经不会再给ingress controller这个Pod分配IP了而是直接使用了k8s-master这个宿主机的IP进行监听也就是除了网络没有和宿主机进行隔离其他都是隔离的;可以看到ingress controller被分配到了master上也可以根据调度指定节点然后我们将hosts解析改成分配到的pod再直接使用域名访问 注如果这里配置的域名可以直接解析到公网IP的话直接访问就行了如果是个人学习环境 解析不到的话就需要在本地电脑绑定hosts记录对应着ingress里面配置的域名 需要注意的是我们只能访问将域名解析改为ingress controller所在的节点上因为在使用host方式的时候ingress controller只会监听它所在的节点的端口其他节点没有ingress controller就不会监听 #查看k8s-master节点上ingress controller监听的80端口 [rootk8s-master ~]# ss -unptl | grep 80 tcp LISTEN 0 128 *:80 *:* users:((nginx,pid41316,fd10),(nginx,pid41311,fd10)) tcp LISTEN 0 128 192.168.1.1:2380 *:* users:((etcd,pid2912,fd3)) tcp LISTEN 0 128 [::]:80 [::]:* users:((nginx,pid41316,fd11),(nginx,pid41311,fd11))#查看k8s-node1节点是否有监听 [rootk8s-node1 ~]# ss -unptl | grep 80 拓展只要我们访问的节点上有ingress controller这个pod就可以访问我们后端的pod所以我们可以指定ingress controller的 副本 以及根据相应的 调度策略 来实现多个指定的节点上跑ingress controller的pod来实现host方式的 ingress controller 高可用 总结 Service NodePort访问的ingress controller流程 域名 web.study.com:32337 -- service nodeprot(80:32337/TCP,443:31950/TCP)(iptables/ipvs) -- ingress controller(nginx 基于域名来进行分流) -- 分布在各个节点的pod#当用户根据域名:端口请求时先是Service NodePort(主要作用是将ingress controller暴露出去)会将请求转发至ingress controller然后ingress controller 会基于域名来帮我们转发到后端service(在这里service提供的只是服务发现的机制并不提供转发的路径)关联的pod上 前者(Service NodePort)根据iptables/ipset来实现转发后者(ingress controller)基于nginx来实现 hostNetwork方式的ingress-nginx整体的工作流程是 域名 web.study.com:80 -- 宿主机80端口 是ingress controller监听的 -- ingress controller(nginx 基于域名来进行分流) -- 分布在各个节点的pod#当用户直接请求域名时此时的请求也就是域名:80只要域名解析正确(可以解析到ingress controller所在的宿主机)这个请求就会直接到ingress controller上然后ingress controller会基于域名来帮我们转发到后端service关联的pod上
http://www.hkea.cn/news/14460384/

相关文章:

  • 中国新闻社官方网站湖南建设资质申请网站
  • 商城网站开发技术企业管理者培训查询
  • 武安专业做网站清远市建设工程造价信息网站
  • 网站登录密码怎么取消保存wordpress淘点金组件
  • 福建富通建设有限公司网站html网页制作代码范例
  • 网站集约化建设意见和建议付费网站建设模板
  • jsp做网站图片怎么存储本地wordpress如何同步
  • html5 珠宝网站嵌入式软件开发工程师做什么
  • 万网如何建设购物网站个人简历模板word可编辑免费
  • 公司网站建设的费用如何入账医疗营销网站建设
  • 网站定位有哪些视频网站建设模版
  • 电商网站开发思路专门做特卖的网站是什么
  • 备案停止网站wordpress 中文版 编码
  • 从用户旅程角度做网站分析简洁的网页
  • 做追星网站效果图河南郑州网站建设
  • 谁能给我一个网站谢谢房产做网站吸引
  • 黄岛做网站的公司怎么网站制作
  • 企业网站栏目设置北京最大专业网站建设
  • 廊坊建站平台小鱼在线网站建设
  • php网站开发打不开做的网站错位怎么办
  • 网站开发代理商智能logo设计网站
  • 招商网站做游戏和做网站哪个难
  • 企业网站的优化南京自媒体公司
  • 一个小型网站设计响应式网站建设开发公司
  • 网站宝 西部数码网站管理助手义乌市网站建设代理
  • 怎么做pdf电子书下载网站学设计的网站
  • 遵义花果园网站建设睢宁做网站
  • 杭州seo网站哪家好创建私人网站
  • 培训会网站建设凯里网站开发gzklyy
  • vue 网站做中英文切换html5在网站建设中的