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

为什么要建微信网站可以下载的网站模板

为什么要建微信网站,可以下载的网站模板,微信公众号的模板网站,平邑做网站的Service服务发现的必要性: 对于kubernetes整个集群来说#xff0c;Pod的地址也可变的#xff0c;也就是说如果一个Pod因为某些原因退出了#xff0c;而由于其设置了副本数replicas大于1#xff0c;那么该Pod就会在集群的任意节点重新启动#xff0c;这个重新启动的Pod的I…Service服务发现的必要性: 对于kubernetes整个集群来说Pod的地址也可变的也就是说如果一个Pod因为某些原因退出了而由于其设置了副本数replicas大于1那么该Pod就会在集群的任意节点重新启动这个重新启动的Pod的IP地址与原IP地址不同这对于业务来说就不能根据Pod的IP作为业务调度。kubernetes就引入了Service的概念它为Pod提供一个入口主要通过Labels标签来选择后端Pod这时候不论后端Pod的IP地址如何变更只要Pod的Labels标签没变那么 业务通过service调度就不会存在问题。 当声明Service的时候会自动生成一个cluster IP这个IP是虚拟IP。我们就可以通过这个IP来访问后端的Pod当然如果集群配置了DNS服务比如现在的CoreDNS那么也可以通过Service的名字来访问它会通过DNS自动解析Service的IP地址。 Service的模式有三种user spaceiptablesipvs: 1、userspace模式 客户端请求到内核空间后由iptables规则将其转发到用户空间的 kube-proxykube-proxy 将其调度到各个node上的目标Pod。这种模式需要多次切换用户空间和内核空间性能很差生产环境不再使用。 2、iptables模式 iptables模式中客户端的请求进入内核态后直接由iptables将请求转发到各个pod上这种模式中随着iptables规则的增加性能越来越差而且iptables规则查看和管理难度很大生产环境中尽量少用。 3、ipvs模式 ipvs模式中客户端的请求进入内核态后直接由ipvs规则将请求转发到各个pod上这种模式相当于内嵌一套lvs集群性能比iptables强大更重要的是支持lvs中调度算法生产环境中ipvs模式优先考虑使用。ipvs内部时使用ipset维护映射关系由于是hash链表因此查询速度远远大于iptables的遍历速度。 Service的类型有四种:Cluster IPLoadBalanceNodePortExternalName 其中Cluster IP是默认的类型。 1、Cluster IP通过 集群内部IP暴露服务默认是这个类型选择该值这个Service服务只能通过集群内部访问 2、LoadBalance使用云提供商的负载均衡器可以向外部暴露服务选择该值外部的负载均衡器可以路由到NodePort服务和Cluster IP服务 3、NodePort顾名思义是Node基本的Port如果选择该值这个Service可以通过NodeIP:NodePort访问这个Service服务NodePort会路由到Cluster IP服务这个Cluster IP会通过请求自动创建 4、ExternalName通过返回 CNAME 和它的值可以将服务映射到 externalName 字段的内容没有任何类型代理被创建可以用于访问集群内其他没有Labels的Pod也可以访问其他NameSpace里的Service。 今天我主要介绍两种类型的用法Cluster IP和NodePort 开始实验 代码我还是用上个实验的tomcatmysql项目zrlog mysql的service用Cluster IP类型因为mysql只通过集群内部访问也可以了 tomcat的service用NodePort类型因为tomcat要和mysq通信也要和外部通信 k8s集群的安装这里就不讲了 前面的文章有详细的写了没装好的可以去看看 首先配置好系统环境 [rootserver153 test]# modprobe ip_va [rootserver153 test]# echo ip_vs /etc/modules-load.d/k8s.conf然后创建一个空目录 开始编写yaml文件如果不想手写那么多代码的可以生成一个模板我上一篇文章也有介绍了 tomcat和mysql的代码其实也可以写在一个文件里,用—分开就可以了但是那样太长了所以我分两个文件写 先写tomcat的yaml文件 [rootserver153 test]# cat tomcat-deploy.yaml apiVersion: v1 kind: Service # 声明版本为Service metadata:name: tomcat-service # 定义Service的名字labels:name: show-tomcat-pod # 定义Service的标签 spec:type: NodePort # 定义Service的类型,自动分配一个集群serviceipselector:app: tomcat-deploy #定义标签选择器,会代理后端apptomcat-deploy的Podports:- port: 80 #内部暴露的端口 targetPort: 8080 #代理的pod的端口 nodePort: 31111 #暴露给主机外部访问的端口(default: 30000-32767)--- apiVersion: apps/v1 kind: Deployment metadata:labels:app: tomcat-deployname: tomcat-deploynamespace: default spec:progressDeadlineSeconds: 600replicas: 1revisionHistoryLimit: 10selector:matchLabels:app: tomcat-deploystrategy:rollingUpdate:maxSurge: 25%maxUnavailable: 25%type: RollingUpdatetemplate:metadata:labels:app: tomcat-deployspec:#创建init容器initContainers:#代码镜像- image: www.test.com/mytest/zrlog:v1#init容器名字name: init#将代码复制到匿名数据卷command: [cp,-r,/tmp/ROOT.war,/www]#将匿名数据卷挂载到容器中的/www目录下volumeMounts:- mountPath: /wwwname: tomcat-volume#创建tomcat容器containers:- image: oxnme/tomcatimagePullPolicy: Alwaysname: tomcatterminationMessagePath: /dev/termination-logterminationMessagePolicy: File#将数据卷挂载到tomcat的代码目录下volumeMounts:- mountPath: /usr/local/tomcat/webapps/name: tomcat-volumednsPolicy: ClusterFirstrestartPolicy: AlwaysschedulerName: default-schedulerterminationGracePeriodSeconds: 10#创建匿名数据卷volumes:- name: tomcat-volumeemptyDir: {}然后是mysql的yaml文件有些是一样的字段所以我就不写注释了 本来mysql这种有状态的pod应该用StatefulSet控制器的但是现在主要是实验service 所以我就用简单的pod来代替了 [rootserver153 test]# cat mysql-pod.yaml apiVersion: v1 kind: Service metadata:name: mysql-headless-servicelabels:name: svc-mysql-pod spec:type: ClusterIPselector:run: mysql-podports:- port: 3306 #内部的暴露端口targetPort: 3306 #代理的pod的端口这里不用暴露给外部网络访问所以不用写nodePort了--- apiVersion: v1 kind: Pod metadata:labels:run: mysql-podname: mysql-podnamespace: default spec:containers:- image: mysql:5.7imagePullPolicy: IfNotPresentname: mysql-podresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:env:- name: MYSQL_ROOT_PASSWORD #定义mysql的初始密码value: MySQL666- name: MYSQL_DATABASE #初始化是创建一个zrlog数据库value: ZrlogdnsPolicy: ClusterFirstenableServiceLinks: truepreemptionPolicy: PreemptLowerPriorityrestartPolicy: AlwaysschedulerName: default-schedulerserviceAccount: defaultserviceAccountName: defaultterminationGracePeriodSeconds: 30 配置文件写好以后就可以启动服务了 [rootserver153 test]# kubectl apply -f mysql-pod.yaml service/mysql-headless-service created pod/mysql-pod created [rootserver153 test]# kubectl apply -f tomcat-deploy.yaml service/tomcat-service created deployment.apps/tomcat-deploy created看运行结果可以看到service和pod都被创建了然后去查看pod和service的情况 [rootserver153 test]# kubectl get pods NAME READY STATUS RESTARTS AGE mysql-pod 1/1 Running 0 104s tomcat-deploy-555479bdf4-bj7mt 1/1 Running 0 96s [rootserver153 test]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.1.0.1 none 443/TCP 4d3h mysql-headless-service ClusterIP 10.1.50.178 none 3306/TCP 2m13s tomcat-service NodePort 10.1.7.229 none 80:31111/TCP 2m5s可以看到情况是正常的 然后我们去看service的详细情况 [rootserver153 ~]# kubectl describe services然后我们去浏览器访问刚才我们定义的外部端口31111 可以看到是能访问的不需要像上次那样又查看变化的ip又要nginx代理才能访问了 就像docker端口映射一样现在就可以通过端口访问了 然后我们连接数据库安装 然后我们的service实验就完成了 pod之间的访问通过名称和端口就可以了service是通过标签名来自动发现的所以ip再怎么变也没有关系 这就解决了pod重建ip会变的问题了 希望对大家的学习有帮助
http://www.huolong8.cn/news/371940/

相关文章:

  • 网站建设的要求有哪些方面网络推广seo是什么
  • 百度seo刷排名网址西安软件优化网站建设
  • 洛阳网站建设 培训网站运营与公司
  • 网站的搜索引擎方案安徽建网站公司
  • 做网站需要知道哪些事情做网站 技术
  • wordpress 网站地址如何做网站电话
  • 跨境电商导购网站建设深圳网站建设黄浦网络
  • 网站地图页面深圳市建设监理协会网站
  • 唐山建设网站公司廉江网站制作
  • 怎么做单页竞价网站dede换网站
  • 动漫网站设计方案免费cms
  • 建设银行纪检监察网站免费学网页设计
  • 企业网站建设西安wordpress主题带demo
  • 上海网站建设沪icp备三亚做民宿的都用什么网站
  • 网站建设常用编程语言成都抖音代运营
  • 苏州专业高端网站建设公司哪家好湖南专业做网站公司
  • 高职图书馆网站建设大赛园林景观网站模板
  • 用win2003做网站运营招聘
  • 关注网站建设免费空间资源
  • python个人网站开发北京南站核酸检测地点
  • 制作公司网站设wordpress重置query循环
  • 网站开发环境实验报告做跨国婚恋网站赚钱吗
  • 网站运营专员做六休一中山企业网站推广公司
  • 谢岗镇仿做网站wordpress实惠主机
  • 崇仁网站建设推广费用wordpress图片自动加广告
  • o2o商城网站开发导航网站怎么做的
  • 上海seo网站优化软件app开发公司架构
  • 上海浦东建筑建设网站如何制作ppt视频教程
  • 怎么 从头开始建设一个网站最大郑州网站建设公司
  • 朔州做网站的公司wordpress上传产品