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

网站登记备案jsp企业网站开发前期报告

网站登记备案,jsp企业网站开发前期报告,宁波网站建设公司比较好,网站推广与优化哪里好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.w-s-a.com/news/139165/

相关文章:

  • 怎样建网站赚钱贵州seo和网络推广
  • 创建网站的工具站内seo优化
  • 网站特效 站长查询网网站
  • 百度移动端网站网站建设设计思想
  • 青岛建设官方网站南宁制作企业网站
  • 校园网站建设管理工作制度大网站开发费用
  • 做logo赚钱的网站分类网站 模板
  • 网站建设完成报告织梦网站怎么做备份
  • 邯郸市城乡建设管理局网站vimwiki wordpress
  • 如何修改wordpress站名如何制作公司网站
  • 宁波网站建设与推广方案网站有了备案号之后能做什么
  • 汕头手机端建站模板pinterest app下载
  • 网站主机免费宁波网站建设优化诊断
  • 吧网站做软件的软件下载简单的ui界面制作
  • 陕西网站制作公司网页制作与设计代码
  • 做网站行情郑州微信网站开发
  • 河间网站建设制作null wordpress theme
  • h5网站制作网站开发网站建设文翻译工作
  • 网站建设 税种秦皇岛哪有网站优化公司
  • 专业开发网站设计找人做网页需要多少钱
  • 手机购物网站 建站网站建设网站制作网站设计
  • 基于iview的网站开发模板小程序制作需要什么语言
  • 精美网站设计保定建行网站首页登录
  • 网站建设常见问题做网站保存什么格式最好
  • 营销型网站建设与网页设计网站建设 amp 找VX cp5173
  • 新网站该如何做网站优化呢儿童手工
  • 湖北现代城市建设集团网站搜索引擎优化的作用
  • 上海做网站吧开一家软件开发公司需要什么
  • 阿里巴巴网站建设改图片建设厅官方网站河南
  • 邓砚谷电子商务网站建设镇江网