• 关于

    路由形式

    的搜索结果

回答

复制控制器是Kubernetes中的原始复制形式。它正在被副本集取代,但它仍然被广泛使用。复制控制器是一种结构,使您可以轻松创建多个窗格,然后确保始终存在该数量的窗格。如果pod崩溃,Replication Controller将替换它。Ingress将集群外部的HTTP和HTTPS路由暴露给集群中的服务。流量路由由入口资源上定义的规则控制。可以将入口配置为为外部可访问的URL提供服务,负载平衡流量,终止SSL以及提供基于名称的虚拟主机。入口控制器负责通常使用负载均衡器来完成入口,但它也可以配置边缘路由器或其他前端以帮助处理流量。为了使入口资源正常工作,群集必须运行入口控制器。这与其他类型的控制器不同,后者作为kube-controller-manager二进制文件的一部分运行,并且通常随集群自动启动。从技术上讲,入口控制器可以是任何能够进行反向代理的系统,但最常见的是Nginx。简而言之,复制控制器是一个控制器,它处理集群中的pod复制,并确保您运行所需数量的pod复制品。默认情况下,此控制器作为kube-controller-manager的一部分提供。而Ingress控制器是反向代理控制器,用于将来自群集外部的HTTP / HTTPS流量路由到具有kubernetes群集的服务。

k8s小能手 2019-12-02 01:48:46 0 浏览量 回答数 0

回答

我是这么分类的:1.对于介绍型或简单的页面,直接用输出页面的形式,加上 Angular 做些快捷操作。比如,账户设置页面;找回密码这些比较独立的页面。2.对于真正的 App 型(可以理解为业务功能复杂的单页面)页面,就需要 Angular 的路由来做。后端可以统一定向到一个控制器,输出基本的页面,Angular 会根据路由自己来渲染。3.对于报错页面,404页面,简单的单页面,就什么都别用了。影响速度。

落地花开啦 2019-12-02 02:53:20 0 浏览量 回答数 0

回答

环境检测启伪静态 要使用url路由条件必备缺: 服务器环境本身支持url rewrite重写功能能确识别路径符号 "/" 间隔url址,必要条件 apache例说明启伪静态:打apache配置文件找应web目录配置项,修改: <Directory "YourDocumentRoot"> Options Indexes FollowSymLinks ExecCGI Includes AllowOverride All Order allow,deny Allow from all 注意:确保 AllowOverride All 重启服务即 简单测试:直接iwebshop主域名追加 /simple/cart ,看能否确进入购物车页面,网站: http://shop.jooyea.cn/simple/cart 通面测试恭喜服务器环境支持更性化更美观更利于seo收录url访问式 前测试依没功服务器环境仅能使用原态 url式千万要强制启iwebshop 伪静态设置,否则整站访问 设置iwebshopurl访问式pathinfo格式("/"割各参数路径格式) 提供2种修改: 登录台进入 <网站设置> 页面点选 <系统设置> 选项卡修改项 <伪静态> 选择启即;打程序根目录 config/config.php 文件, rewriteRule 项参数修改 pathinfo 即,像:'rewriteRule' => 'pathinfo' 注意:设置pathinfo参数网站现异页面显示,则说明服务器环境支持种url访问式 需要立即 rewriteRule 项原 url 参数,像:'rewriteRule' => 'url' (二),路由配置及实例: 进行路由配置需要些基本编程知识直接用教程提供例 所路由规则都放置程序根目录 config/config.php 文件键名:urlRoute 数组面 默认情况config.php文件没 urlRoute 配置文件合适位置键入: 'urlRoute' => array(), 所规则都必须填写 array() 面才能效,条路由规则逗号隔 每条路由规则包括 键值 二部:'goods_id:\d+.html' => 'site/products' 键部(左边部) 表示要url格式;值部(右边部) 表示实际要访问url址,映射哪controller或action执行,且割符号必须 '/' 路由 id:\d 于路径态参数种引用并且数据带则校验性质 面所举例路由规则表述:所 goods_id:\d+.html 格式url,且存数据类型数字 id 参数都由 site/products 执行处理并且页面原 site/products 址都 自改写 goods_id:\d+.html 种格式 iwebshop "site/products/id/商品ID" 路径商品详情页面址,设置路由所商e799bee5baa6e58685e5aeb931333361303731品详情页面都静态页面url形式进行展现

游客bnlxddh3fwntw 2020-04-23 21:29:24 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

getCurrentPages() 方法用于获取当前页面栈的实例,返回页面数组栈。第一个 元素为首页,最后一个元素为当前页面。 框架以栈的形式维护当前的所有页面。路由切换与页面栈的关系如下: 路由方式 页面栈表现 初始化 新页面入栈 打开新页面 新页面入栈 页面重定向 当前页面出栈,新页面入栈 页面返回 当前页面出栈 Tab 切换 页面全部出栈,只留下新的 Tab 页面 下面代码可以用于检测当前页面栈是否具有 5 层页面深度 my.redirectTo({ url: '/pages/logs/logs' }); } else { my.navigateTo({ url: '/pages/index/index' }); } 注意: 不要尝试修改页面栈,会导致路由以及页面状态错误。 内容来源:https://developer.aliyun.com/article/756818?spm=a2c6h.12873581.0.dArticle756818.26162b70Su1GZy&groupCode=tech_library

KaFei 2020-04-27 14:27:01 0 浏览量 回答数 0

问题

服务器端口映射怎么设置?

甲爪联盟 2019-12-01 21:59:24 2906 浏览量 回答数 1

回答

当前容器服务Kubernetes集群支持多种应用访问的形式,最常见形式如SLB:Port、NodeIP:NodePort和域名访问等。Kubernetes集群默认不支持HTTPS访问,如果用户希望能够通过HTTPS进行应用的访问,容器服务和阿里云负载均衡服务为您提供安全的HTTPS访问。本文旨在通过实际案例演示的HTTPS访问配置,帮助用户在容器服务Kubernetes中配置自己的证书。 前提条件 您已创建一个Kubernetes集群,参见创建Kubernetes集群。 您已经通过SSH连接到Master节点,参见SSH 访问 Kubernetes 集群。 连接到Master节点后,创建集群的服务器证书,包括公钥证书和私钥。您可通过以下命令快速创建。 $ openssl genrsa -out tls.key 2048 Generating RSA private key, 2048 bit long modulus ................................................................+++ ........................................................................................+++ e is 65537 (0x10001) $ openssl req -sha256 -new -x509 -days 365 -key tls.key -out tls.crt You are about to be asked to enter information that will be incorporated ... Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:zhejiang Locality Name (eg, city) [Default City]:hangzhou Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your server's hostname) []:foo.bar.com #注意,您需要正确配置域名。 Email Address []:a@alibaba.com 背景信息 根据访问的方式不同,当前可以分为两种配置证书的方式: 在前端SLB上配置证书 在Ingress中配置证书 在SLB上配置HTTPS证书 该方式有如下特点: 优点: 证书配置在SLB上,为应用外部访问的入口,在集群内部进行应用的访问依然用的是http访问方式。 缺点:需要维护较多的域名与IP地址的对应关系。 适用场景:应用不使用Ingress暴露访问方式,通过LoadBalancer类型的Service进行应用访问的暴露。 准备工作 您已在该Kubernetes集群中创建一个Tomcat应用,该应用采用LoadBalancer类型的服务(service)对外提供访问。参见创建服务。 示例 登录容器服务管理控制台。 单击左侧导航栏中路由与负载均衡 > 服务,选择所需集群和命名空间,查看预先创建的tomcat示例应用。如下图所示创建的tomcat应用名称为tomcat,服务名称为tomcat-svc。其中,服务类型为LoadBalancer,暴露的服务端口为8080。 路由与负载均衡 单击外部端点,您可通过IP:Port的方式访问tomcat应用。 外部端点 登录负载均衡管理控制台。 在控制台左侧导航栏,选择实例 > 实例管理,在服务地址栏中,找到与tomcat-svc服务外部端点对应的负载均衡实例,单击操作列中的监听配置向导。 开始进行负载均衡配置,首先进行配置监听协议。选择HTTPS协议,监听端口设置为443,然后单击下一步。 配置SSL证书。 首先单击新建服务器证书。 新建服务器证书 在弹出的创建证书页面中,选择证书来源。本例中选择上传第三方签发证书,然后单击下一步。 在上传第三方签发证书页面中,配置证书名称,选择证书部署区域,然后在公钥证书和私钥栏中输入您创建的服务器公钥证书和私钥,最后单击确定。 公钥证书 然后在选择服务器证书栏选择刚创建的服务器证书。 单击下一步。 配置后端服务器,默认情况下已添加服务器,您需要配置后端服务器端口,用于监听tomcat-svc服务,最后单击下一步。 说明 您需要在容器服务Web界面找到该服务对应的NodePort,并在后端服务器端口中配置该端口。 配置健康检查,然后单击下一步。本例中采用默认配置。 进行配置审核,确认配置正确后,单击提交。 配置成功后,单击确定。 返回实例管理页面,您查看该实例,HTTPS:443监听规则已经生成。 访问HTTPS的tomcat应用,在浏览器中输入https://slb_ip并进行访问。 说明 如果在证书中加入了域名验证,可以使用域名进行访问。同时我们没有删除tcp:8080,所以通过slb_ip:8080也可以访问。 实例管理 在Ingress上配置证书 该方法有以下特点: 优点:无需改动SLB的配置。每一个应用都可以通过Ingress管理自己的证书,互不干扰。 适用场景:每个应用都需要单独的证书进行访问,或者集群中存在需要证书才能访问的应用。 准备工作 您已在该Kubernetes集群中创建一个Tomcat应用,该应用的服务(Service)采用ClusterIP的方式提供访问。本例中准备使用Ingress对外提供HTTPS访问服务。 示例 登录到Kubernetes集群的Master节点,根据准备好的证书创建secret。 说明 在这里需要正确配置域名,否则后续通过HTTPS访问会有问题。 kubectl create secret tls secret-https --key tls.key --cert tls.crt 登录容器服务管理控制台。 在左侧导航栏中,选择路由与负载均衡 > 路由,选择所需的集群和命名空间,单击右上角创建。 可选: 在创建路由对话框中,配置可HTTPS访问的路由,完成后单击确定。 更多详细的路由配置信息,请参见通过界面创建路由(Ingress)。本例中进行如下配置。 名称:输入该路由的名称。 域名:即是前面配置的正确域名,与ssl证书中配置的保持一致。 服务:选择tomcat应用对应的service,端口为8080。 开启TLS:开启TLS后,选择已创建的secret。 配置证书 您也可采用yaml文件的方式创建路由(Ingress),本例对应的yaml示例文件如下: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: tomcat-https spec: tls: hosts: foo.bar.com secretName: secret-https rules: host: foo.bar.com http: paths: path: / backend: serviceName: tomcat-svc servicePort: 8080 返回路由列表,查看创建的路由(Ingress),本例中域名为foo.bar.com,并查看端点和域名,您也可进入路由详情页进行查看。 说明 本例中以foo.bar.com作为测试域名,您需要在hosts文件中创建一条记录。 47.110.119.203 foo.bar.com #其中IP地址即是路由的端点。 路由列表 在浏览器中访问https://foo.bar.com。 说明 由于创建了TLS证书访问,所以要用HTTPS来进行域名访问,针对该应用,本例以foo.bar.com为示例,在本地进行解析。在具体使用场景中,请使用备案过的域名。 路由访问

1934890530796658 2020-03-31 15:46:05 0 浏览量 回答数 0

回答

EIP支持绑定弹性网卡。通过绑定弹性网卡,您可以构造出更健壮、更灵活、扩展性更强的IT解决方案,同时让单台服务器具备多个公网IP的能力。 弹性网卡介绍 弹性网卡(Elastic Network Interface)是独立存在的网卡实例。您可以随时将弹性网卡附加到一个ECS实例,或者从一个ECS实例分离并重新附加到另一个ECS实例上。当您将一个弹性网卡从一个实例移动到另一个实例后,网络流量也会导向到新的实例。   另外,您可以为同一个ECS实例附加多个弹性网卡,使ECS实例具备使用多个公网IP对外提供服务的能力。     使用场景 EIP绑定弹性网卡适用于以下场景: 高可靠的IP迁移 弹性网卡本身提供一个私网IP,在绑定EIP后,相当于同时具备了私网IP和公网IP。在将绑定了EIP的弹性网卡从ECS实例上迁移时,也同时完成了私网IP和公网IP的迁移。为同时使用公网IP和私网IP的云服务器提供了高可靠和高可用的IP迁移解决方案。   使用多公网IP提供服务 一个ECS实例支持绑定多个弹性网卡,您可以为每个弹性网卡绑定一个EIP,这样该ECS实例就拥有了多个公网IP。配合安全组规则,您可以灵活的使用这些公网IP对外提供服务。   常见问题 EIP绑定弹性网卡后收取EIP实例费吗? 收取。 当前EIP只有绑定ECS后不收实例费,绑定其他类型的资源都收取实例费。 一个弹性网卡最多可以绑定几个EIP? 一个。 弹性网卡绑定EIP,附加到ECS后,是否还需要额外配置? 如果ECS上部署的是主动对外提供服务的业务,如web网站,无需在ECS上或VPC中配置路由,可以直接使用弹性网卡绑定的EIP对外提供服务。 如果ECS上部署的是主动访问公网的业务,需要在ECS上自定义默认路由或明细路由。默认路由从主网卡出,可以通过调整路由优先级的方式让报文从弹性网卡出公网。也可以配置明细路由,让报文以负载分担的形式从多个网卡分发或从某一网卡随机地分发出公网。 绑定弹性网卡 完成以下操作,绑定弹性网卡: 登录 专有网络管理控制台。 在左侧导航栏,单击 弹性公网IP。 在 弹性公网IP页面,选择目标EIP的所属地域。 找到目标EIP,然后单击 绑定。 在 后端服务实例页面,选择要绑定的弹性网卡的地域和实例,然后单击 确定。  

51干警网 2019-12-02 00:35:39 0 浏览量 回答数 0

问题

Swarm 集群 应用管理 应用参数配置说明

青蛙跳 2019-12-01 21:35:01 761 浏览量 回答数 0

问题

Swarm 集群 应用管理 应用参数配置说明

青蛙跳 2019-12-01 21:35:00 817 浏览量 回答数 0

回答

是在一个机房里面。 可以用内网的形式的。 有两种方法: 1.将RDS的连接地址切换为内网地址。 在i.aliyun.com上面可以操作。  再改应用程序里面的连接串,重启应用即可。 2.在云服务器上面加条路由,使的云主机访问RDS走你云主机上面的内网网卡。具体可以咨询客服。

logzgh 2019-12-02 03:01:41 0 浏览量 回答数 0

问题

Swarm 集群 应用管理 创建应用

青蛙跳 2019-12-01 21:34:59 781 浏览量 回答数 0

问题

关于FTP上传非常恼人的问题跪求解决办法

淹死的鱼120 2019-12-01 21:55:15 9499 浏览量 回答数 5

问题

阿里巴巴5大移动/前端开源项目你知道几个?

爵霸 2019-12-01 21:56:01 4777 浏览量 回答数 0

问题

阿里巴巴5大移动/前端开源项目你知道几个?

爵霸 2019-12-01 21:55:57 2783 浏览量 回答数 0

问题

关于ECS端口访问求助

安彧 2019-12-01 21:37:31 2527 浏览量 回答数 3

回答

你这是要做软路由啊?在/etc/sysctl.conf开启net.ipv4.ip_forward=1没?回复 @Feng_Yu:知道了。多谢。。回复 @果汁瓶子:这个和iptables没关系,你应该先去学学CCNA/NP的基础知识不过还有个问题想请教。因为还没学习过配iptables呢。这么简单的设置下能上网了。但是虚拟机里面VPN却连不上。Windows下把上网的网卡共享下就好了。虚拟机里面完全不影响VPN连接。那像这种情况。如何完善下这个iptables命令。让虚拟机里面能连上VPN呢。PPTP的那种。。。-_-`我勒个去。。哎。。解决了。关键是这一步给忘了。白困扰我这么久。。感谢。。可以设置桥接形式

爱吃鱼的程序员 2020-06-08 16:45:10 0 浏览量 回答数 0

回答

1:JFinal 是支持注解映射Action的,可以使用@ActionKey来做。另外有朋友做了自动路由映射的扩展:http://www.oschina.net/p/jfinal-ext。另外路由映射还可以写在配置文件之中,然后通过几行代码将其加载至Routes对象中去。另外还可以使用Handler来自定义路由规则,总之方法非常之多,JFinal手册中给的路由方式只是常见形式。 2:render方法仅仅只是 new 了一个XxxRender 并放入Controller之中,在所有interceptor执行完成以后,再调用的render。 3:redirect需要指定一个正确的资源,而非空串“” ###### @JFinal 看了源码,确实许多地方处理的很好, 整个请求链式操作,设计的很精武精巧,这样做到了各个组件之间的低藕合,而且能给开发者很大的自动发挥空间. 对于使用惯传统框架的思维来讲,确实显得有些固化了 要改变自己的想法.此贴只是想最大限度的解决实际中遇到的问题,快速完成一个应用. 谢谢波波的热心解答.(ps:貌似我的1.3中没有此actionKey注解 哈哈)###### @JFinal  看了源码,确实许多地方处理的很好, 整个请求链式操作,设计的很精武精巧,这样做到了各个组件之间的低藕合,而且能给开发者很大的自动发挥空间. 对于使用惯传统框架的思维来讲,确实显得有些固化了 要改变自己的想法.此贴只是想最大限度的解决实际中遇到的问题,快速完成一个应用. 谢谢波波的热心解答.(ps:貌似我的1.3中没有此actionKey注解 哈哈) ###### 引用来自“java_cmm”的答案 @JFinal  看了源码,确实许多地方处理的很好, 整个请求链式操作,设计的很精武精巧,这样做到了各个组件之间的低藕合,而且能给开发者很大的自动发挥空间. 对于使用惯传统框架的思维来讲,确实显得有些固化了 要改变自己的想法.此贴只是想最大限度的解决实际中遇到的问题,快速完成一个应用. 谢谢波波的热心解答.(ps:貌似我的1.3中没有此actionKey注解 哈哈)     JFinal 的几大核心部件全部都是为扩展设计的,这些部件为:Controller、Model、Render、Interceptor、Handler、Plugin。这些部件构成了一个微内核 + 全方位扩展型架构。这样就为开发者提供了充分发挥的空间。     JFinal在很多方面与传统开发是不同的,而更偏向于动态语言世界的模式,只有这样才能最大化开发者生产力,让开发成为一件轻松愉快的事情。传统的零入侵、IOC等等之类很多时候只会拖累开发者。     升级到 JFinal 1.1.5 吧,谢谢你的支持 :) ###### @JFinal 请问下,如果我的bean不继承自model类时,操作需要使用dbKit,但这个接口返回的对象为Record对象,需要手工转换成实际对象?######在你的bean 里面写个方法转一下就行,如 Bean.from(Record)或者做个构造方法 Bean(Record)###### @JFinal 请教  jfinal 如何将spring applicationContext容器对象引用拿到 springplug中的app对象只有包访问权限..###### @JFinal 可以考虑在springplug中添加接口方法让子类实现###### @JFinal 不好意思,打扰了   没注意看源码,已经有一个构造方法是预留了  ###### 引用来自“java_cmm”的答案 @JFinal 不好意思,打扰了   没注意看源码,已经有一个构造方法是预留了  谢谢支持,多来提建议哈 :)

爱吃鱼的程序员 2020-06-03 16:41:30 0 浏览量 回答数 0

问题

Linux主机宝或纯环境开启PATHINFO的方法

八方网络 2019-12-01 21:57:44 23238 浏览量 回答数 13

回答

无论是注解还是其它形式的配置,例如xml,在 JFinal 中都会被尽可能地避免,注解也是配置的一种形式。COC 原则是比使用配置更加优秀的思想。 所以 JFinal 只需要使用 me.add("user", UserController.class) 这种方式即可将 UserController 中所有 action 进行路由配置,而不必对每个 action 使用冗余而繁琐的 RequestMapping 注解。 动态参数绑定到参数列表对于 java 语言来说不太合适,除了有性能方面的原因,更重要是语言方面的支持力度不够。例如:假定 public void action(String userName) 这个 action,传来了一个参数叫 String userName,对于框架实现来说,要得到 userName 这个参数所对应的值需要这样 reqeuest.getParameter("userName"),问题来了,对于java 语言来说无法得到 "userName" 这个字符串,也即你无法知道形参的参数名,只能知道它的参数类型,因为String userName 这个参数的名称会在编译后变成一个符号性的东西。 在 java 世界里,想要知道方法参数名称通常的做法是使用额外的注解,spring 是这样解决的:public void action(@Parameter(name="userName") String un),这种方式代码量提升了不利于极速开发。另一个得到参数名称的办法是通过类似于 eclipse 编译器 ecj 这样的东东,这种编译器在编译 java 代码时,将参数名称进行了保留没有符号化,但你需要写程序对编译后的 class 文件进行分析得到参数名称,这样不仅对性能十分不利而且一旦换了编译器就会失效,体验非常地差。eclipse 的 ecj 的目的是为了代码提示功能可以显示出参数名,也为了调试程序时可以显示参数名。语言层面还有一个纠结的问题,如果编译时保留参数名,那么反编译就变得更容易。 以上的讨论还没有涉及action method带参数后重载方法的问题,随着讨论的深入会发现复杂度会提升更多,而 jfinal 的解决方案是以上权衡后的结果,使用 getModel(...) 就可以搞定参数的绑定,代码量不仅极少,而且性能最优。如果将来 java 在语言层面对方法参数名有支持 jfinal 会立即考虑实现,作者所期望的形式类似于这样: Para p = method.getPara(int); String paraName = p.getName();

a123456678 2019-12-02 02:12:47 0 浏览量 回答数 0

回答

您可以在安全沙箱容器Kubernetes集群中使用镜像创建一个可公网访问的nginx应用。 前提条件 创建一个安全沙箱容器集群。详情请参见创建安全沙箱容器集群。 操作步骤 登录容器服务管理控制台。 在Kubernetes菜单下,单击左侧导航栏中的应用 > 无状态,然后单击页面右上角的使用镜像创建。 设置应用名称、部署集群 、 命名空间、副本数量、类型、容器运行时、注解和标签,副本数量即应用包含的Pod数量。然后单击下一步 进入容器配置页面。 说明 本例中选择无状态类型,即Deployment类型。 容器运行时:可选择runc和runv,如果没有选择,默认为runc。创建安全沙箱容器应用时,需要选择为runv。 如果您不设置命名空间,系统会默认使用 default 命名空间。 应用基本信息 设置容器配置。 说明 您可为应用的Pod设置多个容器。 设置容器的基本配置。 镜像名称:您可以单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定,本例中为 nginx。 您还可以填写私有 registry。填写的格式为domainname/namespace/imagename:tag 镜像版本:您可以单击选择镜像版本 选择镜像的版本。若不指定,默认为 latest。 总是拉取镜像:为了提高效率,容器服务会对镜像进行缓存。部署时,如果发现镜像 Tag 与本地缓存的一致,则会直接复用而不重新拉取。所以,如果您基于上层业务便利性等因素考虑,在做代码和镜像变更时没有同步修改 Tag ,就会导致部署时还是使用本地缓存内旧版本镜像。而勾选该选项后,会忽略缓存,每次部署时重新拉取镜像,确保使用的始终是最新的镜像和代码。 镜像密钥:单击设置镜像密钥设置镜像的密钥。对于私有仓库访问时,需要设置密钥,具体可以参见使用镜像密钥 资源限制:可指定该应用所能使用的资源上限,包括 CPU 和内存两种资源,防止占用过多资源。其中,CPU 资源的单位为 cores,即一个核;内存的单位为 Bytes,可以为 Mi 。 所需资源:即为该应用预留资源额度,包括 CPU 和内存两种资源,即容器独占该资源,防止因资源不足而被其他服务或进程争占资源,导致应用不可用。 Init Container:勾选该项,表示创建一个Init Container,Init Container包含一些实用的工具,具体参见https://kubernetes.io/docs/concepts/workloads/pods/init-containers/。 基本信息配置 可选: 配置环境变量。 支持通过键值对的形式为 Pod 配置环境变量。用于给 Pod 添加环境标志或传递配置等,具体请参见 Pod variable。 可选: 设置健康检查 支持存活检查(liveness)和就绪检查(Readiness)。存活检查用于检测何时重启容器;就绪检查确定容器是否已经就绪,且可以接受流量。关于健康检查的更多信息,请参见https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes。 健康检查 请求类型 配置说明 HTTP请求 即向容器发送一个HTTPget 请求,支持的参数包括: 协议:HTTP/HTTPS 路径:访问HTTP server 的路径 端口:容器暴露的访问端口或端口名,端口号必须介于1~65535。 HTTP头:即HTTPHeaders,HTTP请求中自定义的请求头,HTTP允许重复的header。支持键值对的配置方式。 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为3秒。 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10s,最小为1s。 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(liveness)必须是1。 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。 TCP连接 即向容器发送一个TCP Socket,kubelet将尝试在指定端口上打开容器的套接字。 如果可以建立连接,容器被认为是健康的,如果不能就认为是失败的。支持的参数包括: 端口:容器暴露的访问端口或端口名,端口号必须介于1~65535。 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为15秒。 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10s,最小为1s。 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(liveness)必须是1。 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。 命令行 通过在容器中执行探针检测命令,来检测容器的健康情况。支持的参数包括: 命令行:用于检测容器健康情况的探测命令。 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为5秒。 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10s,最小为1s。 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(liveness)必须是1。 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。 配置生命周期。 您可以为容器的生命周期配置容器启动项、启动执行、启动后处理和停止前处理。具体参见https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/。 启动执行:为容器设置预启动命令和参数。 启动后处理:为容器设置启动后的命令。 停止前处理:为容器设置预结束命令。 配置生命周期 可选: 配置数据卷信息。 支持配置本地存储和云存储。 本地存储:支持主机目录(hostpath)、配置项(configmap)、保密字典(secret)和临时目录,将对应的挂载源挂载到容器路径中。更多信息参见 volumes。 云存储:支持云盘/NAS/OSS三种云存储类型。 本例中配置了一个云盘类型的数据卷,将该云盘挂载到容器中/tmp 路径下,在该路径下生成的容器数据会存储到云盘中。 配置数据卷 完成容器配置后,单击 下一步。 进行高级设置。 设置访问设置。 您可以设置暴露后端Pod的方式,最后单击创建。本例中选择ClusterIP服务和路由(Ingress),构建一个可公网访问的nginx应用。 说明 针对应用的通信需求,您可灵活进行访问设置: 内部应用:对于只在集群内部工作的应用,您可根据需要创建ClusterIP或NodePort类型的服务,来进行内部通信。 外部应用:对于需要暴露到公网的应用,您可以采用两种方式进行访问设置: 创建LoadBalancer类型的服务:使用阿里云提供的负载均衡服务(Server Load Balancer,SLB),该服务提供公网访问能力。 创建ClusterIP、NodePort类型的服务,以及路由(Ingress):通过路由提供公网访问能力,详情参见https://kubernetes.io/docs/concepts/services-networking/ingress/。 创建应用1 在服务栏单击创建,在弹出的对话框中进行配置,最后单击创建。 创建应用2 名称:您可自主设置,默认为applicationname-svc。 类型:您可以从下面 3 种服务类型中进行选择。 虚拟集群 IP:即 ClusterIP,指通过集群的内部 IP 暴露服务,选择该项,服务只能够在集群内部访问。 节点端口:即 NodePort,通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个 NodePort 服务。 负载均衡:即 LoadBalancer,是阿里云提供的负载均衡服务,可选择公网访问或内网访问。负载均衡可以路由到 NodePort 服务和 ClusterIP 服务。 端口映射:您需要添加服务端口和容器端口,若类型选择为节点端口,还需要自己设置节点端口,防止端口出现冲突。支持 TCP/UDP 协议。 注解:为该服务添加一个注解(annotation),支持负载均衡配置参数,参见通过负载均衡(Server Load Balancer)访问服务。 标签:您可为该服务添加一个标签,标识该服务。 在路由栏单击创建,在弹出的对话框中,为后端Pod配置路由规则,最后单击创建。更多详细的路由配置信息,请参见路由配置说明。 说明 通过镜像创建应用时,您仅能为一个服务创建路由(Ingress)。本例中使用一个虚拟主机名称作为测试域名,您需要在hosts中添加一条记录。在实际工作场景中,请使用备案域名。 101.37.224.146 foo.bar.com #即ingress的IP 配置路由规则 在访问设置栏中,您可看到创建完毕的服务和路由,您可单击变更和删除进行二次配置。 变更和删除路由 可选: 容器组水平伸缩。 您可勾选是否开启容器组水平伸缩,为了满足应用在不同负载下的需求,容器服务支持服容器组(Pod)的弹性伸缩,即根据容器 CPU 和内存资源占用情况自动调整容器组数量。 容器组水平伸缩 说明 若要启用自动伸缩,您必须为容器设置所需资源,否则容器自动伸缩无法生效。参见容器基本配置环节。 指标:支持CPU和内存,需要和设置的所需资源类型相同。 触发条件:资源使用率的百分比,超过该使用量,容器开始扩容。 最大容器数量:该Deployment可扩容的容器数量上限。 最小容器数量:该Deployment可缩容的容器数量下限。 可选: 设置调度设置。 您可设置升级方式、节点亲和性、应用亲和性和应用非亲和性,详情参见https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity。 说明 亲和性调度依赖节点标签和Pod标签,您可使用内置的标签进行调度;也可预先为节点、Pod配置相关的标签。 设置升级方式。 升级方式包括滚动升级(rollingupdate)和替换升级(recreate),详细请参见https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/ 设置节点亲和性,通过Node节点的Label标签进行设置。 设置节点亲和性 节点调度支持硬约束和软约束(Required/Preferred),以及丰富的匹配表达式(In, NotIn, Exists, DoesNotExist. Gt, and Lt): 必须满足,即硬约束,一定要满足,对应requiredDuringSchedulingIgnoredDuringExecution,效果与NodeSelector相同。本例中Pod只能调度到具有对应标签的Node节点。您可以定义多条硬约束规则,但只需满足其中一条。 尽量满足,即软约束,不一定满足,对应preferredDuringSchedulingIgnoredDuringExecution。本例中,调度会尽量不调度Pod到具有对应标签的Node节点。您还可为软约束规则设定权重,具体调度时,若存在多个符合条件的节点,权重最大的节点会被优先调度。您可定义多条软约束规则,但必须满足全部约束,才会进行调度。 设置应用亲和性调度。决定应用的Pod可以和哪些Pod部署在同一拓扑域。例如,对于相互通信的服务,可通过应用亲和性调度,将其部署到同一拓扑域(如同一个主机)中,减少它们之间的网络延迟。 应用亲和性调度 根据节点上运行的Pod的标签(Label)来进行调度,支持硬约束和软约束,匹配的表达式有:In, NotIn, Exists, DoesNotExist。 必须满足,即硬约束,一定要满足,对应requiredDuringSchedulingIgnoredDuringExecution,Pod的亲和性调度必须要满足后续定义的约束条件。 命名空间:该策略是依据Pod的Label进行调度,所以会受到命名空间的约束。 拓扑域:即topologyKey,指定调度时作用域,这是通过Node节点的标签来实现的,例如指定为kubernetes.io/hostname,那就是以Node节点为区分范围;如果指定为beta.kubernetes.io/os,则以Node节点的操作系统类型来区分。 选择器:单击选择器右侧的加号按钮,您可添加多条硬约束规则。 查看应用列表:单击应用列表,弹出对话框,您可在此查看各命名空间下的应用,并可将应用的标签导入到亲和性配置页面。 硬约束条件:设置已有应用的标签、操作符和标签值。本例中,表示将待创建的应用调度到该主机上,该主机运行的已有应用具有app:nginx标签。 尽量满足,即软约束,不一定满足,对应preferredDuringSchedulingIgnoredDuringExecution。Pod的亲和性调度会尽量满足后续定义的约束条件。对于软约束规则,您可配置每条规则的权重,其他配置规则与硬约束规则相同。 说明 权重:设置一条软约束规则的权重,介于1-100,通过算法计算满足软约束规则的节点的权重,将Pod调度到权重最大的节点上。 设置应用非亲和性调度,决定应用的Pod不与哪些Pod部署在同一拓扑域。应用非亲和性调度的场景包括: 将一个服务的Pod分散部署到不同的拓扑域(如不同主机)中,提高服务本身的稳定性。 给予Pod一个节点的独占访问权限来保证资源隔离,保证不会有其它Pod来分享节点资源。 把可能会相互影响的服务的Pod分散在不同的主机上。 说明 应用非亲和性调度的设置方式与亲和性调度相同,但是相同的调度规则代表的意思不同,请根据使用场景进行选择。 最后单击创建。 创建成功后,默认进入创建完成页面,会列出应用包含的对象,您可以单击查看应用详情进行查看。 查看详情 默认进入新建的nginx-deployment的详情页面。 查看详情2 说明 您也可以通过以下操作创建路由与服务。如上图所示,在访问方式页签。 单击服务右侧的创建,也可以进行服务创建,操作步骤同6.i.a。 您单击路由右侧的创建,进行路由的创建,操作同6.i.b。 单击左侧导航栏的路由与负载均衡 > 路由,可以看到路由列表下出现一条规则。 路由规则 在浏览器中访问路由测试域名,您可访问 nginx 欢迎页。 访问nginx

1934890530796658 2020-03-27 10:03:36 0 浏览量 回答数 0

回答

您可以使用镜像创建一个可公网访问的 nginx 应用。 前提条件 创建一个 Kubernetes 集群。详情请参见创建 Kubernetes 集群。 操作步骤 登录容器服务管理控制台。 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 无状态,然后单击页面右上角的使用镜像创建。 设置应用名称、部署集群 、命名空间、副本数量、类型、注解和标签,副本数量即应用包含的 Pod 数量。然后单击下一步 进入容器配置页面。 说明 本例中选择无状态类型,即 Deployment 类型。 如果您不设置命名空间,系统会默认使用 default 命名空间。 基本配置 设置容器配置。 说明 您可为应用的Pod设置多个容器。 设置容器的基本配置。 镜像名称:您可以单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定,本例中为 nginx。 您还可以填写私有 registry。填写的格式为domainname/namespace/imagename:tag 镜像版本:您可以单击选择镜像版本 选择镜像的版本。若不指定,默认为 latest。 总是拉取镜像:为了提高效率,容器服务会对镜像进行缓存。部署时,如果发现镜像 Tag 与本地缓存的一致,则会直接复用而不重新拉取。所以,如果您基于上层业务便利性等因素考虑,在做代码和镜像变更时没有同步修改 Tag ,就会导致部署时还是使用本地缓存内旧版本镜像。而勾选该选项后,会忽略缓存,每次部署时重新拉取镜像,确保使用的始终是最新的镜像和代码。 镜像密钥:单击设置镜像密钥设置镜像的密钥。对于私有仓库访问时,需要设置密钥,具体可以参见使用镜像密钥 资源限制:可指定该应用所能使用的资源上限,包括 CPU 和内存两种资源,防止占用过多资源。其中,CPU 资源的单位为 cores,即一个核;内存的单位为 Bytes,可以为 Mi 。 所需资源:即为该应用预留资源额度,包括 CPU 和内存两种资源,即容器独占该资源,防止因资源不足而被其他服务或进程争占资源,导致应用不可用。 Init Container:勾选该项,表示创建一个 Init Container,Init Container 包含一些实用的工具,具体参见https://kubernetes.io/docs/concepts/workloads/pods/init-containers/。 基本信息配置 可选: 配置环境变量。 支持通过键值对的形式为 Pod 配置环境变量。用于给 Pod 添加环境标志或传递配置等,具体请参见 Pod variable。 可选: 设置健康检查 支持存活检查(liveness)和就绪检查(Readiness)。存活检查用于检测何时重启容器;就绪检查确定容器是否已经就绪,且可以接受流量。关于健康检查的更多信息,请参见https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes。 健康检查 请求类型 配置说明 HTTP请求 即向容器发送一个 HTTPget 请求,支持的参数包括: 协议:HTTP/HTTPS。 路径:访问 HTTP server 的路径。 端口:容器暴露的访问端口或端口名,端口号必须介于 1~65535。 HTTP 头:即 HTTPHeaders,HTTP 请求中自定义的请求头,HTTP 允许重复的 header。支持键值对的配置方式。 延迟探测时间(秒):即 initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为 3 秒。 执行探测频率(秒):即 periodSeconds,指执行探测的时间间隔,默认为 10 秒,最小为 1 秒。 超时时间(秒):即 timeoutSeconds,探测超时时间。默认 1 秒,最小 1 秒。 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是 1,最小值是 1。对于存活检查(liveness)必须是 1。 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是 3,最小值是 1。 TCP连接 即向容器发送一个 TCP Socket,kubelet 将尝试在指定端口上打开容器的套接字。 如果可以建立连接,容器被认为是健康的,如果不能就认为是失败的。支持的参数包括: 端口:容器暴露的访问端口或端口名,端口号必须介于 1~65535。 延迟探测时间(秒):即 initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为 15 秒。 执行探测频率(秒):即 periodSeconds,指执行探测的时间间隔,默认为 10 秒,最小为 1 秒。 超时时间(秒):即 timeoutSeconds,探测超时时间。默认 1 秒,最小 1 秒。 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是 1,最小值是 1。对于存活检查(liveness)必须是 1。 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是 3,最小值是 1。 命令行 通过在容器中执行探针检测命令,来检测容器的健康情况。支持的参数包括: 命令行:用于检测容器健康情况的探测命令。 延迟探测时间(秒):即 initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为 5秒。 执行探测频率(秒):即 periodSeconds,指执行探测的时间间隔,默认为 10 秒,最小为1秒。 超时时间(秒):即 timeoutSeconds,探测超时时间。默认 1 秒,最小 1 秒。 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是 1,最小值是 1。对于存活检查(liveness)必须是 1。 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是 3,最小值是 1。 配置生命周期。 您可以为容器的生命周期配置容器启动项、启动执行、启动后处理和停止前处理。具体参见 https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/。 启动执行:为容器设置预启动命令和参数。 启动后处理:为容器设置启动后的命令。 停止前处理:为容器设置预结束命令。 配置生命周期 可选: 配置数据卷信息。 支持配置本地存储和云存储。 本地存储:支持主机目录(hostpath)、配置项(configmap)、保密字典(secret)和临时目录,将对应的挂载源挂载到容器路径中。更多信息参见 volumes。 云存储:支持云存储。 本例中配置了一个云存储类型的数据卷,将该云盘挂载到容器中 /tmp 路径下。 配置数据卷 可选: 配置日志服务,您可进行采集配置和自定义 Tag 设置。 说明 请确保已部署 Kubernetes 集群,并且在此集群上已安装日志插件。 您可对日志进行采集配置: 日志库:即在日志服务中生成一个对应的 logstore,用于存储采集到的日志。 容器内日志路径:支持 stdout 和文本日志。 stdout:stdout 表示采集容器的标准输出日志。 文本日志:表示收集容器内指定路径的日志,本例中表示收集 /var/log/nginx 下所有的文本日志,也支持通配符的方式。 您还可设置自定义 tag,设置 tag 后,会将该 tag 一起采集到容器的日志输出中。自定义 tag 可帮助您给容器日志打上 tag,方便进行日志统计和过滤等分析操作。 日志采集配置 完成容器配置后,单击 下一步。 进行高级设置。 设置访问设置。 您可以设置暴露后端 Pod 的方式,最后单击创建。本例中选择 ClusterIP 服务和路由(Ingress),构建一个可公网访问的 nginx 应用。 说明 针对应用的通信需求,您可灵活进行访问设置: 内部应用:对于只在集群内部工作的应用,您可根据需要创建 ClusterIP 或 NodePort 类型的服务,来进行内部通信。 外部应用:对于需要暴露到公网的应用,您可以采用两种方式进行访问设置: 创建 LoadBalancer 类型的服务:使用阿里云提供的负载均衡服务(Server Load Balancer,SLB),该服务提供公网访问能力。 创建路由(Ingress):通过路由(Ingress)提供公网访问能力,详情参见https://kubernetes.io/docs/concepts/services-networking/ingress/。 创建应用1 在服务栏单击创建,在弹出的对话框中进行配置,最后单击创建。 名称:您可自主设置,默认为 applicationname-svc。 类型:您可以从下面 3 种服务类型中进行选择。 虚拟集群 IP:即 ClusterIP,指通过集群的内部 IP 暴露服务,选择该项,服务只能够在集群内部可以访问。 节点端口:即 NodePort,通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 : ,可以从集群的外部访问一个 NodePort 服务。 负载均衡:即 LoadBalancer,是阿里云提供的负载均衡服务,可选择公网访问或内网访问。负载均衡可以路由到 NodePort 服务和 ClusterIP 服务。 端口映射:您需要添加服务端口和容器端口,若类型选择为节点端口,还需要自己设置节点端口,防止端口出现冲突。支持 TCP/UDP 协议。 注解:为该服务添加一个注解(annotation),支持负载均衡配置参数,参见通过负载均衡(Server Load Balancer)访问服务。 标签:您可为该服务添加一个标签,标识该服务。 在路由栏单击创建,在弹出的对话框中,为后端 Pod 配置路由规则,最后单击创建。更多详细的路由配置信息,请参见路由配置说明。 说明 通过镜像创建应用时,您仅能为一个服务创建路由(Ingress)。本例中使用一个虚拟主机名称作为测试域名,您需要在 hosts 中添加一条记录。在实际工作场景中,请使用备案域名。 101.37.224.146 foo.bar.com #即ingress的IP 配置路由规则 在访问设置栏中,您可看到创建完毕的服务和路由,您可单击变更和删除进行二次配置。 变更和删除路由 可选: 容器组水平伸缩。 您可勾选是否开启容器组水平伸缩,为了满足应用在不同负载下的需求,容器服务支持容器组(Pod)的弹性伸缩,即根据容器 CPU 和内存资源占用情况自动调整容器组数量。 容器组水平伸缩 说明 若要启用自动伸缩,您必须为容器设置所需资源,否则容器自动伸缩无法生效。参见容器基本配置环节。 指标:支持 CPU 和内存,需要和设置的所需资源类型相同。 触发条件:资源使用率的百分比,超过设置的Pod request值,容器开始扩容。 最大容器数量:该 Deployment 可扩容的容器数量上限。 最小容器数量:该 Deployment 可缩容的容器数量下限。 可选: 设置调度设置。 您可设置升级方式、节点亲和性、应用亲和性和应用非亲和性,详情参见https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity。 说明 亲和性调度依赖节点标签和 Pod 标签,您可使用内置的标签进行调度;也可预先为节点、Pod 配置相关的标签。 设置升级方式。 升级方式包括滚动升级(rollingupdate)和替换升级(recreate),详细请参见https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/ 设置节点亲和性,通过 Node 节点的 Label 标签进行设置。 设置节点亲和性 节点调度支持硬约束和软约束(Required/Preferred),以及丰富的匹配表达式(In, NotIn, Exists, DoesNotExist. Gt, and Lt): 必须满足,即硬约束,一定要满足,对应 requiredDuringSchedulingIgnoredDuringExecution,效果与 NodeSelector 相同。本例中 Pod 只能调度到具有对应标签的 Node 节点。您可以定义多条硬约束规则,但只需满足其中一条。 尽量满足,即软约束,不一定满足,对应 preferredDuringSchedulingIgnoredDuringExecution。本例中,调度会尽量不调度 Pod 到具有对应标签的 Node 节点。您还可为软约束规则设定权重,具体调度时,若存在多个符合条件的节点,权重最大的节点会被优先调度。您可定义多条软约束规则,但必须满足全部约束,才会进行调度。 设置应用亲和性调度。决定应用的 Pod 可以和哪些 Pod 部署在同一拓扑域。例如,对于相互通信的服务,可通过应用亲和性调度,将其部署到同一拓扑域(如同一个主机)中,减少它们之间的网络延迟。 应用亲和性调度 根据节点上运行的 Pod 的标签(Label)来进行调度,支持硬约束和软约束,匹配的表达式有:In, NotIn, Exists, DoesNotExist。 必须满足,即硬约束,一定要满足,对应 requiredDuringSchedulingIgnoredDuringExecution ,Pod 的亲和性调度必须要满足后续定义的约束条件。 命名空间:该策略是依据 Pod 的 Label 进行调度,所以会受到命名空间的约束。 拓扑域:即 topologyKey,指定调度时作用域,这是通过 Node 节点的标签来实现的,例如指定为kubernetes.io/hostname,那就是以 Node 节点为区分范围;如果指定为 beta.kubernetes.io/os,则以 Node 节点的操作系统类型来区分。 选择器:单击选择器右侧的加号按钮,您可添加多条硬约束规则。 查看应用列表:单击应用列表,弹出对话框,您可在此查看各命名空间下的应用,并可将应用的标签导入到亲和性配置页面。 硬约束条件:设置已有应用的标签、操作符和标签值。本例中,表示将待创建的应用调度到该主机上,该主机运行的已有应用具有 app:nginx 标签。 尽量满足,即软约束,不一定满足,对应 preferredDuringSchedulingIgnoredDuringExecution。Pod 的亲和性调度会尽量满足后续定义的约束条件。对于软约束规则,您可配置每条规则的权重,其他配置规则与硬约束规则相同。 说明 权重:设置一条软约束规则的权重,介于 1-100,通过算法计算满足软约束规则的节点的权重,将 Pod 调度到权重最大的节点上。 设置应用非亲和性调度,决定应用的 Pod 不与哪些 Pod 部署在同一拓扑域。应用非亲和性调度的场景包括: 将一个服务的 Pod 分散部署到不同的拓扑域(如不同主机)中,提高服务本身的稳定性。 给予 Pod 一个节点的独占访问权限来保证资源隔离,保证不会有其它 Pod 来分享节点资源。 把可能会相互影响的服务的 Pod 分散在不同的主机上。 说明 应用非亲和性调度的设置方式与亲和性调度相同,但是相同的调度规则代表的意思不同,请根据使用场景进行选择。 最后单击创建。 创建成功后,默认进入创建完成页面,会列出应用包含的对象,您可以单击查看应用详情进行查看。 查看详情 默认进入新建的 nginx-deployment 的详情页面。 查看详情2 说明 您也可以通过以下操作创建路由与服务。如上图所示,在访问方式页签。 单击服务右侧的创建,也可以进行服务创建,操作步骤同 6.i.a。 您单击路由右侧的创建,进行路由的创建,操作同 6.i.b。 单击左侧导航栏的路由与负载均衡 > 路由,可以看到路由列表下出现一条规则。 路由规则 在浏览器中访问路由测试域名,您可访问 nginx 欢迎页。 访问nginx

1934890530796658 2020-03-26 11:41:33 0 浏览量 回答数 0

回答

文档得读下先http://dangdangdotcom.github.io/sharding-jdbc/post/limitations/ SQL语句限制 不支持DDL语句 不支持子语句 不支持UNION 和 UNION ALL 不支持特殊INSERT 每条INSERT语句只能插入一条数据,不支持VALUES后有多行数据的语句 不支持DISTINCT聚合 ######schema要先行###### 你是什么数据库? 那为什么不用mycat? ######mycat能支持动态分表吗######真是到了那个程度,考虑Oracle 12c把。 ###### sharding-jdbc和mycat使用不同的理念,sharding-jdbc目前是基于jdbc驱动,无需额外的proxy,因此也无需关注proxy本身的高可用。是以jar包的形式提供服务的(类似于dubbo)。可以根据自己的喜好选择。除了接入端不同(jdbc vs mysql协议),其他的路由,sql解析,结果归并流程的大致相似。 ######我也想做这个的一个功能 根据业务id动态分表

kun坤 2020-06-04 10:58:36 0 浏览量 回答数 0

回答

Re专有网络 怎么使用? 阿里云专有网络VPC(Virtual Private Cloud)是帮助用户基于阿里云构建出一个隔离的网络环境。用户可以完全掌控自己的虚拟网络,包括选择自有IP地址范围、划分网段、配置路由表和网关等。此外您也可以通过专线/VPN等连接方式将VPC与传统数据中心组成一个按需定制的网络环境,实现应用的平滑迁移上云。         专有网络是用户基于阿里云创建的自定义私有网络,不同的专有网络之间彻底逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如ECS,Intranet SLB,RDS等。 在创建专有网络时,用户需要以CIDRBlock的形式指定专有网络内使用的私网网段 专有网络创建之后,用户需要继续创建交换机(VSwitch),然后才能够在专有网络内创建云产品实例(ECS, SLB, RDS) 创建专有网络时,需要指定CIDRBlock。当新建VPC实例的状态变成Available之后,表示VPC创建成功,可以进行下一步的管理操作 删除指定的专有网络,必须首先删除专有网络内所有的云产品实例(包含安全组,交换机,云产品实例,路由条目等)         专有网络网段: 关于CIDRBlock的相关信息,请参见维基百科上的Classless Inter-Domain Routing条目说明 专有网络创建成功之后,CIDRBlock无法修改,建议使用比较大的网段作为VPC的CIDRBlock(比如直接使用192.168.0.0/16和172.16.0.0/12以及10.0.0.0/8 3个网段),尽量避免后续扩容。系统不会根据VPC的CIDRBlock来创建系统路由,所以使用比较大的地址范围来创建VPC,不会影响业务的正常使用         专有网络可以构建出一个隔离的网络环境。在这个网络中可以选择自有 IP 地址范围、划分网段、配置路由表和网关等。 更多操作信息可以参考云中沙箱实验:使用VPC在阿里云上搭建专有网络 网址:https://edu.cloudcare.cn/courses/c976f9d730dd4502b1fb2dd95e48a1c5/detail

仟与仟寻 2019-12-01 23:51:35 0 浏览量 回答数 0

问题

基于海康网络摄像头开发直播监控系统

刘刚_ 2020-05-22 21:21:08 3 浏览量 回答数 1

回答

因为域的关系,网站上面的根目录是指域的根目录,不是文件系统的根目录。浏览器从服务器上面寻找文件,肯定无法寻找服务器文件系统上面的文件,否则岂不是任何人都能浏览整个服务器上的文件了。浏览器只能找到域,从域上面找文件,所以你必须在路径前面加/,这样浏览器才明白你是要从这个域的起点开始找文件,也就是域的根目录,否则浏览器就会以你当前访问的文件位置按相对它的路径找文件。######嗯,一般现在的程序都做url处理,所以浏览器从url里面认出来的路径,一般不是文件的实际路径,所以静态文件一般都是以域的跟路径方式写,程序内部对静态文件也是自动生成跟路径,而不是写相对路径。这样的话就可以根据需要变化url形式,而不必重新调整图片js和css的路径了。######这样啊。麻烦啊,感觉DZ不用这个路由,而用rewrite,就是这个原因啊。是不是每次url路径的变化,浏览器认为的/根目录也会变化?就像他只认最后的/作为根目录,并且它的目录也会变化。就不能用相对路径######你自己看看pathinfo的路径形式就知道了######回复 @欣儿 : 这就是相对路径和绝对路径的问题了######@leo108 从实验看,是将最后的/当成啦根目录。为什么会这样,######回复 @欣儿 : 但是浏览器并不知道是pathinfo还是啥的,所以请求的路径会被pathinfo影响######看啦啊,跟目录一样

kun坤 2020-06-09 11:16:07 0 浏览量 回答数 0

回答

问题原因 关于不同问题场景的问题原因如下。 场景一的原因如下。 本地网络异常。 节点网络异常或被攻击。 本地到运营商中间链路某路由节点故障。 场景二的原因如下。 刷新未生效。 读取的是本地浏览器缓存。 被本地运营商劫持。 场景三的原因如下。 访问的非CDN节点。 被某种原因劫持。 解决方案 以下是不同问题场景的解决方案。 场景一:使用ping命令访问CDN加速域名失败 排查加速域名是否在沙箱节点中,由于沙箱中的域名无法保证服务稳定性,所以会存在使用ping命令后,网络不通的情况,此时沙箱可能正在受到攻击。 检测访问的IP是否为CDN的节点IP。关于如何检测,请参考诊断工具。如果访问的节点不是CDN节点IP,请核实如下几种情况。 本地是否有开启代理软件,因为有些代理软件会强制更改访问域名的解析。 是否绑定Host文件,将加速域名强制解析到了某个IP。 本地存在DNS劫持,可以在本地开启杀毒安全软件,并且固定本地所使用的IP为223.5.5.5、114.114.114.114的DNS或者其他安全的DNS。如果劫持情况比较严重,并且无法解决,则需要向网络服务提供商投诉要求解决劫持。 在本地使用ping命令,连接该节点IP,以及使用站长工具(例如17ce.com或者听云平台)在全国探测该节点IP是否存在问题,即各个地区访问该节点均延迟均较大或者不通,本地也ping不通该节点,则该节点存在问题的可能性较大,该前提是域名确实不在沙箱中。 在本地的Windows主机使用tracert,或者在Linux主机使用traceroute,用来探测该IP并提供完整探测截图,根据得到的截图定位整个网络链路的问题点。 注:MTR信息判断方法如下。 目的节点丢包率为100%,并且从目的节点往前逐个检查,直到第一个开始丢包的节点(中间不能有丢包率为0%的路由节点),则第一个开始丢包的路由节点是问题路由的可能性较大。详细排查步骤,请参见ping丢包或不通时链路测试说明。 请阿里云技术支持进行排查,在此期间可更改本地DNS为其他DNS(例如223.5.5.5或者114.114.114.114),并刷新本地的DNS缓存,使其调度到其他正常的节点。 场景二:从CDN节点中获取的仍是更改之前的文件 检测访问的IP是否为CDN的节点IP。 根据CDN的配置,绑定CDN节点和源站。绑定源站测试时,请注意如下几点。 CDN的回源Host配置中,使用curl命令测试源站的命令如下。如果绑定Host文件,那么应该将CDN加速域名绑定Host到源站域名所解析出来的IP地址。 curl -H "Host:[$Domain_Name]" "[$Source_Station]" 注: [$Domain_Name]为CDN加速域名。 [$Source_Station]为源站域名。 不同的回源端口得到的访问结果也可能不一样,分别测试得到Response Headers相关信息,判断访问的文件是否一致,主要判断以下几个方面。 注:如果以下三点存在任何一项不一致的情况,那么可认为源站和节点上文件的确不一致。如果都存在的情况下,则第三点最具备判断依据。 Content-Length大小是否一致。 Last-Modified的修改时间是否一致。 ETag和Content-MD5是否一致。 如果上述步骤确认后都无问题,最终在节点上获取的文件仍和源站文件不一致,建议刷新URL,等待约10分钟后再进行测试,如果多次刷新之后问题仍未解决,请提交工单。 注:刷新生效时间约为5~10分钟。 场景三:访问CDN加速域名后获取非其站点文件内容 检测访问的IP是否为CDN的节点IP。 排查CDN节点本身是否缓存了非用户站点上的文件。 排查客户端到CDN节点这段链路,具体方法如下。 打开Chrome浏览器的开发者工具,切换到Network,并在地址栏输入访问的URL。 单击访问的URL,查看实际的访问情况。查看报错request URl、remote ip、requestUrl,主要查看访问形式是否为http://x.x.x.x/cache/CDN。或者查看remote IP是否为CDN节点IP,如下图这种则是劫持。此时,需要联系其本地运营商投诉处理,解除劫持。

保持可爱mmm 2020-03-30 15:00:05 0 浏览量 回答数 0

回答

"主题前提 多语言站点包含三个不同方面: 界面翻译 内容 网址路由 尽管它们都以不同的方式互连,但是从CMS的角度来看,它们是使用不同的UI元素进行管理的,并且存储方式也不同。您似乎对自己的实现和对前两个的理解充满信心。问题是关于后一个方面的问题:“ URL转换?我们应该这样做吗?应该以什么方式进行?” URL可以由什么组成? 一个非常重要的事情是,不要对IDN感兴趣。取而代之的是支持音译(也:转录和罗马化)。乍一看,IDN似乎是国际URL的可行选择,但实际上,它不能按广告宣传工作,原因有两个: 某些浏览器会将非ASCII字符(例如'ч'或)'ž'转换为'%D1%87'和'%C5%BE' 如果用户具有自定义主题,则主题的字体很可能没有这些字母的符号 实际上,几年前,我在一个基于Yii的项目(可怕的框架,恕我直言)中尝试了IDN方法。在抓取该解决方案之前,我遇到了上述两个问题。另外,我怀疑这可能是攻击媒介。 可用选项...如我所见。 基本上,您有两个选择,可以抽象为: http://site.tld/[:query]:[:query]决定语言和内容选择的地方 http://site.tld/[:language]/[:query]:[:language]URL的一部分定义语言的选择,[:query]仅用于标识内容 查询是Α和Ω.. 假设您选择http://site.tld/[:query]。 在这种情况下,您有一种主要的语言来源:[:query]段的内容;以及另外两个来源: $_COOKIE['lang']该特定浏览器的价值 HTTP Accept-Language (1),(2)标头中的语言列表 首先,您需要将查询与定义的路由模式之一进行匹配(如果您选择的是Laravel,请在此处阅读)。成功匹配模式后,您需要查找语言。 您将必须遍历模式的所有部分。找到所有这些片段的潜在翻译,并确定使用哪种语言。当(不是“如果”)发生冲突时,将使用两个其他来源(cookie和标头)来解决路由冲突。 例如:http://site.tld/blog/novinka。 那是音译""блог, новинка"",在英语中大约是""blog"", ""latest""。 您已经注意到,俄语中的“блог”将译为“博客”。这意味着对于您的第一部分[:query](在最佳情况下),最终会['en', 'ru']列出可能的语言。然后您进入下一个片段-“ novinka”。可能的列表中可能只有一种语言:['ru']。 当列表中有一项时,您已经成功找到该语言。 但是,如果最终得到2种(例如:俄语和乌克兰语)或更多种可能性..或0种可能性(视情况而定)。您将必须使用Cookie和/或标题才能找到正确的选项。 如果其他所有方法均失败,则选择站点的默认语言。 语言作为参数 替代方法是使用URL,可以将其定义为http://site.tld/[:language]/[:query]。在这种情况下,翻译查询时,您无需猜测语言,因为此时您已经知道要使用哪种语言。 还有另一种语言来源:cookie值。但是,这里没有必要弄乱Accept-Language标头,因为在“冷启动”的情况下(当用户第一次使用自定义查询打开网站时),您不会处理未知数量的可能的语言。 相反,您有3个简单的优先选项: 如果[:language]设置了细分,请使用它 如果$_COOKIE['lang']设置,使用它 使用默认语言 使用该语言时,您只需尝试翻译查询,如果翻译失败,请对该特定段使用“默认值”(基于路由结果)。 这不是第三种选择吗? 是的,从技术上讲,您可以将两种方法结合使用,但这会使过程复杂化,并且只适合那些想要手动更改URL http://site.tld/en/news到http://site.tld/de/news并希望新闻页面更改为德语的人员。 但是即使是这种情况,也可以使用cookie值(其中包含有关先前选择语言的信息)缓解,以减少魔术和希望。 使用哪种方法? 您可能已经猜到了,我建议您将其http://site.tld/[:language]/[:query]作为更明智的选择。 同样在真实的单词情况下,URL中将包含第三大部分:“标题”。如在线商店中的产品名称或新闻站点中的文章标题。 例: http://site.tld/en/news/article/121415/EU-as-global-reserve-currency 在这种情况下'/news/article/121415'将是查询,而'EU-as-global-reserve-currency'标题是。纯粹用于SEO。 可以在Laravel中完成吗? Kinda,但默认情况下不是。 我不太熟悉它,但是据我所知,Laravel使用简单的基于模式的路由机制。要实现多语言URL,您可能必须扩展核心类,因为多语言路由需要访问不同形式的存储(数据库,缓存和/或配置文件)。 已路由。现在怎么办? 结果,您最终将获得两条有价值的信息:当前语言和查询的翻译段。然后,这些值可用于调度将产生结果的类。 基本上,以下网址:(http://site.tld/ru/blog/novinka或不含的版本'/ru')变成了类似 $parameters = [ 'language' => 'ru', 'classname' => 'blog', 'method' => 'latest', ]; 您仅用于调度的对象: $instance = new {$parameter['classname']}; $instance->{'get'.$parameters['method']}( $parameters ); ..或它的某些变体,具体取决于特定的实现。"来源:stack overflow

保持可爱mmm 2020-05-18 10:09:50 0 浏览量 回答数 0

回答

云市场可接入的商品类型分为镜像类、下载类、应用软件(SaaS)类、服务类、钉钉类、容器类和资源编排类。 由于每种商品类型的开通方式不同,所以每种商品类型在上架时,所要填写的接入信息也不一样。 需要注意的是,商品/接入类型与商品的类目是两个概念,没有直接关系。例如一个商品类型是SaaS的商品,可能属于应用软件类目,也可能属于建站类目;一个商品类型是镜像的商品,可能属于基础软件类目,也可能属于应用软件类目。 镜像类 镜像类商品是指将服务制作的镜像作为商品,用户可以基于镜像来创建ECS实例,从而获得与镜像一致的系统环境。阿里云镜像市场提供服务商制作的镜像,这些镜像在操作系统上整合了具体的软件环境和功能,比如PHP运行环境、控制面板等,供有相关需求的用户开通实例时选用。”镜像商品制作说明“ 应用软件(SaaS)类 应用软件(SaaS)类商品是将服务商提供的在线应用软件作为商品。用户使用时无需购买独立的云资源,只需购买后登到特定的网站登录后即可使用。”应用软件(SaaS)类商品接入说明“ 应用软件(SaaS)类商品提供按量计费方式,用户使用时,须由服务商通过接口将使用量数据推送至云市场进行扣费。[按量数据推送接口文档] API类 API类商品是一种可以把服务商的后端服务、数据通过一组接口提供给用户的商品形式,用户可以将API商品用于自己开发的产品当中去。同时,云市场可以将用户使用API的计量数据推送至服务商端。[API类商品接入说明] 服务类 服务类商品是服务商为用户提供人工服务,不交付具体的软件或云资源。“服务商品服务流模板” 下载类 下载类商品是由服务商将下载包作为商品,用户可直接下载到自己的电脑上运行,无需部署到云资源上。 容器类 容器类商品是以容器镜像形式或容器编排模板形式,交付给用户使用的商品类型。用户购买容器商品后,可以一键创建容器集群,一站式网络、存储、日志、监控、调度、路由和持续发布管理。同时可以通过云市场提供的授权码对交付的服务进行授权管理。“容器类商品接入说明” 资源编排类 资源编排可以帮助用户对阿里云资源进行建模和配置。用户只需要创建一个描述自己所需的所有阿里云资源(如 ECS 实例或 RDS 数据库实例)的模板,然后资源编排将根据模板创建和配置这些资源,以便用户将更多的时间花在使用阿里云资源上。“资源编排类商品接入说明”

LiuWH 2020-03-23 10:45:15 0 浏览量 回答数 0

回答

一般微服务通过网关对外暴露统一服务调用地址,网关需要通过nginx做负载均衡,服务端负载均衡是指外部对系统发起的调用负载均衡,客户端负载均衡是指系统内部服务之间相互调用的负载均衡,服务端负载均衡像老师向学生收学费,这个学费在谁手上老师不在意,通过负载均衡找到那个可以提供学费的人就可以了。然后学生收到老师要交学费的指令,自己身上没有钱,只能从爸爸、妈妈那里凑钱。最终由学生把钱交给老师,学生和爸爸妈妈凑钱的这部分是客户端负载均衡,老师向学生收钱是服务端负载均衡,大型微服务项目这两个肯定都有,内部服务肯定要做集群的,不然就会有单点故障的可能出现,所有内部服务之间也是有负载均衡的,nginx和ribbon的负载均衡机制也是不一样的,白夜: nginx负载均衡是反向代理的形式,由nginx决定外部发起的请求路由到哪个服务器上。ribbon客户端负载均衡是内部服务a调用服务b的时候,从注册中心通过服务b的应用名拿到存活的服务ip集合,然后通过负载均衡算法取到可以调用的服务b的ip然后发起http请求,所以客户端的负载均衡不是由被调用方去决定的,而是调用方做决定的,白夜: 所以不是反向代理

黄二刀 2020-07-16 14:21:42 0 浏览量 回答数 0

回答

解决方案问题1:某地区用户ping不通CDN的加速域名排查用户的加速域名是否在沙箱节点中(目前可以在CDN控制台得知其加速域名是否在CDN沙箱节点)。以ycc.pier39.cn为例,域名在沙箱中,则控制台域名状态提示会如下图所示:image.png | center | 763x291沙箱中的域名无法保证服务稳定性,所以会存在ping不通的情况,此时可能沙箱正在受到攻击。根据提交的Ping截图,拿到所访问的节点IP,核实该IP是否是CDN节点IP,以IP:1.2.3.4,域名zihu-live.pier39.cn为例,请按照这里的方法核查是否该IP为CDN节点。如果用户的访问节点不是CDN节点IP,需要用户核实几个情况:用户本地是否有开启代理软件(有些代理软件会强制更改访问域名的解析情况)。用户是否有绑定Host文件,将加速域名强制解析到了某个IP。用户本地存在DNS劫持,这种情况,让用户本地开启杀毒安全软件,并且固定本地所使用的DNS为阿里的223或者电信的114或者其他知名的DNS,如果劫持情况比较严重,并且无法解决,则需要向你的网络服务提供商投诉要求解决劫持。自己本地实际ping该节点IP,以及使用站长工具(比如17ce.com或者听云平台)在全国探测该节点IP,是否存在问题(问题现象:各个地区访问该节点均延迟均较大或者不通,自己本地也Ping该节点不通),这种情况该节点存在问题的可能性较大(结合步骤1确认好域名确实没有在沙箱中)。让用户本地使用tracert(win主机)或者traceroute(linux主机)到该IP进行探测并提供完整探测截图,根据得到的截图确定整个网络链路的问题点。MTR信息判断方法:目的节点丢包率为100%,并且从目的节点往前一直找到第一个开始丢包的节点(中间不能有丢包率为0%的路由节点),则第一个开始丢包的路由节点是问题路由的可能性较大。详细排查步骤可以参考这篇文章。也可以给阿里云技术同学进行排查。在此期间缓解用户问题的方法:让用户更改本地所使用的localDNS为其他DNS(比如电信的114或者阿里的223)并且刷新本地的DNS缓存,使其调度到其他正常的节点,走另外一条线路,则该问题可能得到缓解。问题2:源站更改文件之后,某个地区的用户从CDN节点上拿到的还是更改之前的文件让客户提交ping CDN加速域名的截图,拿到客户访问的节点IP。判断该节点是否是CDN的节点,判断方法请看问题1的步骤2。根据CDN的配置,绑定客户提供的CDN节点,以及CDN的源站(绑定用户源站测试的时候,注意一下用户CDN的回源Host配置,举例:如果用户CDN加速域名为A,源站域名为B,回源Host配置的为A,那么测试源站的时候,以curl来说,命令应该为curl -H “Host: A” “B”;如果是绑定Host文件,那么应该将用户的CDN加速域名绑定Host到源站域名所解析出来的IP上),绑定源站测试的时候,还要注意一下源站回源端口的设置,不同的回源端口得到的访问结果也可能是不一样的;分别测试得到response header相关信息,判断是否如客户所说访问的文件会是不一致。这里判断是否一致,着重看几点:content-length大小是否一致last-modified(如果有):修改时间是否一致Etag/Content-Md5(如果有)是否一致上述三点只要有任何一个是不一致的,那么均可认为源站和节点上文件的确是不一致的,上述三点中,条件允许(意思是几个信息都有的情况下)其中第三点是最具备判断依据的点。image.png | center | 848x544上述步骤确认都OK,并且最终还是拿到节点上文件的确和源站文件不一致的情况下,那么建议用户刷新该URL,等待约10分钟之后再去测试(刷新生效时间约为5~10分钟),如果多次刷新之后问题仍未解决,请提交工单。问题3:某个地区用户访问CDN加速域名上拿到的非其站点文件内容判断用户访问的IP是否CDN的节点IP,方法看问题1的步骤2。排查是否CDN节点本身缓存了非用户站点上的文件,思路可以按照问题2系列步骤进行,下面针对用户客户端到CDN L1这一段链路进行方法排查用户在能够复现问题的情况下,使其使用浏览器开发者工具,切到network标签下,浏览器地址栏键入访问URL然后回车访问,network标签下,点击用户访问的那个URL,截图general /request header,看看用户实际的访问情况,报错request URl、remote ip、requestUrl主要看访问形式是否如http://x.x.x.x/cache/CDN的访问URL或者remote IP非CDN节点IP,如下图这种则是劫持:image.png | center | 766x357需要联系其本地运营商投诉处理,解除劫持。

元芳啊 2019-12-02 00:42:07 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站