首页 文章 精选 留言 我的

精选列表

搜索[Service Mesh],共10000篇文章
优秀的个人博客,低调大师

Kubernetes 实战教学,手把手教您在 K8s 集群上部署 Istio Mesh(一)

出品丨Docker公司(ID:docker-cn)编译丨小东每周一、三、五,与您不见不散! 在之前的两篇 Kubernetes 实战教学文章《Kubernetes 实战教学,手把手教您设置拥有5个节点的 K8S 群集》、《Kubernetes 实战教学,手把手教您运行第一个 Nginx 集群》中,我展示了如何构建5个节点的 Kubernetes 集群以及如何在这个集群环境中构建第一个 Nginx 应用程序。在本文中,我将展示如何在 Play with Kubernetes 平台上构建 Istio 应用程序。 Istio 是一个完全的开源服务网格,它可以对现有的分布式应用程序进行清晰的分层处理。近期,Istio v1.0版本已经正式上线。Istio 完全由 Go 语言编写,它是一个相当成熟的平台,可以提供 API 将其集成到任何日志记录平台策略系统中。这个项目对系统的开销非常小。您可以浏览 https://github.com/istio/ 从 GitHub 处获取 Istio。Istio的多样化功能集使您能够成功、高效地运行分布式微服务架构,并提供一种统一的方式来保护、连接和监视微服务。 Istio 由以下几个部分组成: Envoy —— 即每个微服务的Sidecar代理,用于处理集群中服务之间以及从一个服务到外部服务之间的入口、出口流量。这个代理形成了一个安全的微服务网格,可以提供丰富的功能,如发现、第7层路由、断路器、策略实施和遥测记录/报告功能。(注意:服务网格不是覆盖网络。它简化并增强了应用程序中的微服务,通过底层平台提供的网络相互通信。) Mixer —— 代理和微服务利用的中央组件,用于实施授权、速率限制、配额、身份验证、请求跟踪和遥测收集等策略。 Pilot —— 负责在运行时配置代理的组件。 Citadel —— 负责证书颁发和轮换的集中组件。 Node Agent —— 负责证书颁发和轮换的每个节点组件。 Galley —— 用于在 Istio 中验证、摄取、聚合、转换和分发配置的中心组件。 Istio 带来了哪些好处? 图示:Sidecar 接收了所有网络流量 Istio 可以让您连接、保护、控制和观察服务; 它有助于降低服务部署的复杂性,并减轻开发团队的压力; 它为开发人员和 DevOps 提供了细粒度的可见性和对流量的控制,并且无需对应用程序代码进行任何更改; 它为 CIO 提供了所需的必要工具,来帮助整个企业实现安全性和合规性要求; 它提供了对整个服务网格的行为洞察和操作控制; 通过HTTP、gRPC、Web Socket 和 TCP 流量的自动负载均衡,Istio 可以轻松创建已部署服务的网络; 它提供了对流量行为的细粒度控制,具有丰富的路由规则、重试、故障转移和故障注入; 它支持可插入的策略层和配置 API、支持访问控制、速率限制和配额; Istio 为群集中的所有流量提供自动度量标准、日志和跟踪,包括群集的入口和出口; 它通过强大的基于身份的身份验证和授权在群集中提供安全的服务到服务的通信; Istio 目前支持 Kubernetes。在这篇文章中,我将展示如何在Play with Kubernetes 平台使用Istio。 首先,打开 https://labs.play-with-k8s.com/ 访问 Kubernetes Playground。 单击“Login”后选择使用 Docker Hub 或 GitHub ID 进行身份验证。 一旦开始会话,您将拥有一个自己的实验室环境。 添加第一个 Kubernetes 节点 单击左侧的“Add New Instance” 来建您的第一个 Kubernetes 集群节点。它会自动将其命名为“node1”。每个实例都预装了Docker Community Edition(CE)和Kubeadm。该节点将被视为我们群集的主节点。 引导主节点 您可以通过使用以下脚本初始化主节点(node1)来引导 Kubernetes 集群。将此脚本内容复制到 bootstrap.sh 文件中,并使用“chmod + x bootstrap.sh”命令使其可执行。 当您执行此脚本时,作为初始化的一部分,kubeadm 将会编写所需的几个配置文件,设置 RBAC 并部署Kubernetes控制平面组件(如 kube-apiserver、kube-dns、kube-proxy 和 etcd等等)。控制平面组件以 Docker 容器的形式进行部署。 复制上面的 kubeadm 连接令牌命令,并将其保存以供下一步使用。此命令将用于将其他节点连接到集群。 添加工作节点 点击“Add New Node”来添加一个新的工作节点。 检查集群状态 验证正在运行的 Pod 我们已经完成了安装 Istio 1.0.0 版本的所有准备,在下一篇文章中,我将为大家带来 Istio 1.0.0 版本完整的安装过程,并在 Istio 1.0.0 中运行演示示例。

优秀的个人博客,低调大师

《Java RESTful Web Service实战》第一章的实现补漏

韩陆,你好你的书,麻烦写的清楚一点,多写一些,也许还能多点稿费。小韩,写书认真一点。第13页上来就用maven命令行创建项目,这就有问题啊,没有pom.xml文件mvn这个命令怎么跑的起来呢?所以正确的过程是这样的:eclipse上创建项目创建的结果是这样的:创建过程,先创建一个maven项目 然后archetypes选择书中指出的jersey-quickstart-grizzly2创建项目之后,实际上会报错默认情况下eclipse创建出来的pom.xml文件中提供的jersey-version的版本是1.20但实际上mavenrepository上提供的最新版也就是1.19.4,所以修改一下正常情况下,创建项目完毕,我们测试一下:首先当然是参考书中的命令行方式,用curl这个命令去执行,这需要首先下载配置curlhttps://curl.haxx.se/windows/配置环境变量现在都准备好了我们先看看这个项目的内容,它都自动帮我们生成了什么:MyResource.java package my.restfulwork.jerseyone; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; // The Java class will be hosted at the URI path "/myresource" @Path("/myresource") public class MyResource { // TODO: update the class to suit your needs // The Java method will process HTTP GET requests @GET // The Java method will produce content identified by the MIME Media // type "text/plain" @Produces("text/plain") public String getIt() { return "Got it!"; } } Main.java package my.restfulwork.jerseyone; import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory; import com.sun.jersey.api.core.PackagesResourceConfig; import com.sun.jersey.api.core.ResourceConfig; import org.glassfish.grizzly.http.server.HttpServer; import javax.ws.rs.core.UriBuilder; import java.io.IOException; import java.net.URI; public class Main { private static int getPort(int defaultPort) { //grab port from environment, otherwise fall back to default port 9998 String httpPort = System.getProperty("jersey.test.port"); if (null != httpPort) { try { return Integer.parseInt(httpPort); } catch (NumberFormatException e) { } } return defaultPort; } private static URI getBaseURI() { return UriBuilder.fromUri("http://localhost/").port(getPort(9998)).build(); } public static final URI BASE_URI = getBaseURI(); protected static HttpServer startServer() throws IOException { ResourceConfig resourceConfig = new PackagesResourceConfig("my.restfulwork.jerseyone"); System.out.println("Starting grizzly2..."); return GrizzlyServerFactory.createHttpServer(BASE_URI, resourceConfig); } public static void main(String[] args) throws IOException { // Grizzly 2 initialization HttpServer httpServer = startServer(); System.out.println(String.format("Jersey app started with WADL available at " + "%sapplication.wadl\nHit enter to stop it...", BASE_URI)); System.in.read(); httpServer.stop(); } } MainTest.java package my.restfulwork.jerseyone; import org.glassfish.grizzly.http.server.HttpServer; import com.sun.jersey.core.header.MediaTypes; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.WebResource; import junit.framework.TestCase; public class MainTest extends TestCase { private HttpServer httpServer; private WebResource r; public MainTest(String testName) { super(testName); } @Override protected void setUp() throws Exception { super.setUp(); //start the Grizzly2 web container httpServer = Main.startServer(); // create the client Client c = Client.create(); r = c.resource(Main.BASE_URI); } @Override protected void tearDown() throws Exception { super.tearDown(); httpServer.stop(); } /** * Test to see that the message "Got it!" is sent in the response. */ public void testMyResource() { String responseMsg = r.path("myresource").get(String.class); assertEquals("Got it!", responseMsg); } /** * Test if a WADL document is available at the relative path * "application.wadl". */ public void testApplicationWadl() { String serviceWadl = r.path("application.wadl"). accept(MediaTypes.WADL).get(String.class); assertTrue(serviceWadl.length() > 0); } } 上述三个文件是项目自己生成的java代码我们运行Main.javaconsole中的信息如下所示: 我们使用cmd客户端,执行命令行语句:执行结果,和书中写的一样。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册