精华内容
下载资源
问答
  • 在Docker技术的基础上,为容器的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。 Kubernetes一个完备的分布式系统支撑平台,具有完备的集群管理能力,多...

    什么是kubernetes

    1.它是一个全新的容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性

    2.Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。

    同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。

    3.Kubernetes中,Service是分布式集群架构的核心,一个Service对象拥有如下关键特征:

    拥有一个唯一指定的名字
    拥有一个虚拟IP(Cluster IP、Service IP、或VIP)和端口号
    能够体统某种远程服务能力
    被映射到了提供这种服务能力的一组容器应用上
    

    4.Service的服务进程目前都是基于Socket通信方式对外提供服务,比如Redis、Memcache、MySQL、Web Server,或者是实现了某个具体业务的一个特定的TCP Server进程,虽然一个Service通常由多个相关的服务进程来提供服务,每个服务进程都有一个独立的Endpoint(IP+Port)访问点,但Kubernetes能够让我们通过服务连接到指定的Service上。

    有了Kubernetes内建的透明负载均衡和故障恢复机制,不管后端有多少服务进程,也不管某个服务进程是否会由于发生故障而重新部署到其他机器,都不会影响我们服对务的正常调用,更重要的是这个Service本身一旦创建就不会发生变化,意味着在Kubernetes集群中,我们不用为了服务的IP地址的变化问题而头疼了。

    5.在集群管理方面,Kubernetes将集群中的机器划分为一个Master节点和一群工作节点Node,其中,在Master节点运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理能力,并且都是全自动完成的。

    Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是PodNode上运行着Kubernetes的kubelet、kube-proxy服务进程,这些服务进程负责Pod的创建、启动、监控、重启、销毁以及实现软件模式的负载均衡器

    6.在Kubernetes集群中,它解决了传统IT系统中服务扩容和升级的两大难题。你只需为需要扩容的Service关联的Pod创建一个Replication Controller简称(RC),则该Service的扩容及后续的升级等问题将迎刃而解
    在一个RC定义文件中包括以下3个关键信息。

    目标Pod的定义
    目标Pod需要运行的副本数量(Replicas)
    要监控的目标Pod标签(Label)
    

    在创建好RC后,Kubernetes会通过RC中定义的的Label筛选出对应Pod实例并实时监控其状态和数量,如果实例数量少于定义的副本数量,则会根据RC中定义的Pod模板来创建一个新的Pod,然后将新Pod调度到合适的Node上启动运行,直到Pod实例的数量达到预定目标,这个过程完全是自动化。

    总结:

    worker节点用来跑很多的pod,可以运行一个或多个容器
    pod是k8s调度的最小单位。

    在这里插入图片描述

    为什么需要 k8s?

    简化应用部署
    提高硬件资源利用率
    健康检查和自修复
    自动扩容缩容
    服务发现和负载均衡
    

    k8s的核心概念

    Master

    k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入口。
    拥有Etcd存储服务(可选),运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。Kubernetes API server提供HTTP Rest接口的关键服务进程是Kubernetes里所有资源的增、删、改、查等操作的唯一入口也是集群控制的入口进程Kubernetes Controller Manager是Kubernetes所有资源对象的自动化控制中心;Kubernetes Schedule是负责资源调度(Pod调度)的进程

    Node

    Node是Kubernetes集群架构中运行Pod的服务节点(亦叫agent或minion)。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机。关联Master管理节点,拥有名称和IP、系统资源信息。运行docker eninge服务,守护进程kunelet及负载均衡器kube-proxy.

    每个Node节点都运行着以下一组关键进程

    kubelet:负责对Pod对于的容器的创建、启停等任务
    kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件
    Docker Engine(Docker):Docker引擎,负责本机容器的创建和管理工作
    

    Node节点可以在运行期间动态增加到Kubernetes集群中,默认情况下,kubelet会想master注册自己,这也是Kubernetes推荐的Node管理方式,kubelet进程会定时向Master汇报自身情报,如操作系统、Docker版本、CPU和内存,以及有哪些Pod在运行等等,这样Master可以获知每个Node节点的资源使用情况,并实现高效均衡的资源调度策略。

    Pod

    运行于Node节点上,若干相关容器的组合。Pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP地址和端口,能够通过localhost进行通。Pod是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。一个Pod可以包含一个容器或者多个相关容器。

    Pod其实有两种类型:普通Pod和静态Pod,后者比较特殊,它并不存在Kubernetes的etcd存储中,而是存放在某个具体的Node上的一个具体文件中,并且只在此Node上启动。普通Pod一旦被创建,就会被放入etcd存储中,随后会被Kubernetes Master调度到摸个具体的Node上进行绑定,随后该Pod被对应的Node上的kubelet进程实例化成一组相关的Docker容器冰启动起来,在。在默认情况下,当Pod里的某个容器停止时,Kubernetes会自动检测到这个问起并且重启这个Pod(重启Pod里的所有容器),如果Pod所在的Node宕机,则会将这个Node上的所有Pod重新调度到其他节点上

    Replication Controller

    Replication Controller用来管理Pod的副本,保证集群中存在指定数量的Pod副本。集群中副本的数量大于指定数量,则会停止指定数量之外的多余容器数量,反之,则会启动少于指定数量个数的容器,保证数量不变。Replication Controller是实现弹性伸缩、动态扩容和滚动升级的核心。

    Service

    Service定义了Pod的逻辑集合和访问该集合的策略,是真实服务的抽象。Service提供了一个统一的服务访问入口以及服务代理和发现机制,关联多个相同Label的Pod,用户不需要了解后台Pod是如何运行。

    外部系统访问Service的问题

    首先需要弄明白Kubernetes的三种IP这个问题

    Node IP:Node节点的IP地址
    Pod IP: Pod的IP地址
    Cluster IP:Service的IP地址
    

    首先,Node IP是Kubernetes集群中节点的物理网卡IP地址,所有属于这个网络的服务器之间都能通过这个网络直接通信。这也表明Kubernetes集群之外的节点访问Kubernetes集群之内的某个节点或者TCP/IP服务的时候,必须通过Node IP进行通信

    其次,Pod IP是每个Pod的IP地址,他是Docker Engine根据docker0网桥的IP地址段进行分配的,通常是一个虚拟的二层网络。

    最后Cluster IP是一个虚拟的IP,但更像是一个伪造的IP网络,原因有以下几点

    Cluster IP仅仅作用于Kubernetes Service这个对象,并由Kubernetes管理和分配P地址
    Cluster IP无法被ping,他没有一个“实体网络对象”来响应
    Cluster IP只能结合Service Port组成一个具体的通信端口,单独的Cluster IP不具备通信的基础,并且他们属于Kubernetes集群这样一个封闭的空间。
    

    Kubernetes集群之内,Node IP网、Pod IP网于Cluster IP网之间的通信,采用的是Kubernetes自己设计的一种编程方式的特殊路由规则。

    Label

    Kubernetes中的任意API对象都是通过Label进行标识,Label的实质是一系列的Key/Value键值对,其中key于value由用户自己指定。Label可以附加在各种资源对象上,如Node、Pod、Service、RC等,一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去。Label是Replication Controller和Service运行的基础,二者通过Label来进行关联Node上运行的Pod。

    我们可以通过给指定的资源对象捆绑一个或者多个不同的Label来实现多维度的资源分组管理功能,以便于灵活、方便的进行资源分配、调度、配置等管理工作。
    一些常用的Label如下:

    版本标签:"release":"stable","release":"canary"......
    环境标签:"environment":"dev","environment":"qa","environment":"production"
    架构标签:"tier":"frontend","tier":"backend","tier":"middleware"
    分区标签:"partition":"customerA","partition":"customerB"
    质量管控标签:"track":"daily","track":"weekly"
    

    Label相当于我们熟悉的标签,给某个资源对象定义一个Label就相当于给它大了一个标签,随后可以通过Label Selector(标签选择器)查询和筛选拥有某些Label的资源对象,Kubernetes通过这种方式实现了类似SQL的简单又通用的对象查询机制。

    Label Selector在Kubernetes中重要使用场景如下:

    kube-Controller进程通过资源对象RC上定义Label Selector来筛选要监控的Pod副本的数量,从而实现副本数量始终符合预期设定的全自动控制流程
    kube-proxy进程通过Service的Label Selector来选择对应的Pod,自动建立起每个Service岛对应Pod的请求转发路由表,从而实现Service的智能负载均衡
    通过对某些Node定义特定的Label,并且在Pod定义文件中使用Nodeselector这种标签调度策略,kuber-scheduler进程可以实现Pod”定向调度“的特性
    

    k8s的架构

    在这里插入图片描述
    组件

    Kubernetes Master控制组件,调度管理整个系统(集群),包含如下组件:
    1.Kubernetes API Server
    作为Kubernetes系统的入口,其封装了核心对象的增删改查操作,以RESTful API接口方式提供给外部客户和内部组件调用。维护的REST对象持久化到Etcd中存储。
    2.Kubernetes Scheduler
    为新建立的Pod进行节点(node)选择(即分配机器),负责集群的资源调度。组件抽离,可以方便替换成其他调度器。
    3.Kubernetes Controller
    负责执行各种控制器,目前已经提供了很多控制器来保证Kubernetes的正常运行。
    Replication Controller
    管理维护Replication Controller,关联Replication Controller和Pod,保证Replication Controller定义的副本数量与实际运行Pod数量一致。
    Node Controller
    管理维护Node,定期检查Node的健康状态,标识出(失效|未失效)的Node节点。
    Namespace Controller
    管理维护Namespace,定期清理无效的Namespace,包括Namesapce下的API对象,比如Pod、Service等。
    Service Controller
    管理维护Service,提供负载以及服务代理。
    EndPoints Controller
    管理维护Endpoints,关联Service和Pod,创建Endpoints为Service的后端,当Pod发生变化时,实时更新Endpoints。
    Service Account Controller
    管理维护Service Account,为每个Namespace创建默认的Service Account,同时为Service Account创建Service Account Secret。
    Persistent Volume Controller
    管理维护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定,为释放的Persistent Volume执行清理回收。
    Daemon Set Controller
    管理维护Daemon Set,负责创建Daemon Pod,保证指定的Node上正常的运行Daemon Pod。
    Deployment Controller
    管理维护Deployment,关联Deployment和Replication Controller,保证运行指定数量的Pod。当Deployment更新时,控制实现Replication Controller和 Pod的更新。
    Job Controller
    管理维护Job,为Jod创建一次性任务Pod,保证完成Job指定完成的任务数目
    Pod Autoscaler Controller
    实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当满足条件时执行Pod的伸缩动作。
    
    Kubernetes Node运行节点,运行管理业务容器,包含如下组件:
    
    Kubelet
    负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。
    Kubernetes Proxy
    负责为Pod创建代理服务,Kubernetes Proxy会从Kubernetes API Server获取所有的Service信息,并根据Service的信息创建代理服务,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。
    Docker
    Node上需要运行容器服务。
    

    (2)
    !在这里插入图片描述在这里插入图片描述k8s的分层 结构
    在这里插入图片描述在这里插入图片描述

    部署步骤

    1.实验环境

    主机名(IP) 	服务
    ser1(172.25.2.2) 	harbor仓库
    ser2(172.25.2.3) 	master
    ser3(172.25.2.4) 	node1
    ser4(172.25.2.5) 	node2
    
    关闭上述主机的防火墙,selinx,设置每台主机可以上网
    

    2.环境需求

    一个或者多个兼容 deb 或者 rpm 软件包的操作系统,
    比如 Ubuntu 或者 CentOS
    
    每台机器 2 GB 以上的内存,内存不足时应用会受限制
    主节点上 2 CPU 以上
    
    集群里所有的机器有完全的网络连接,公有网络或者私有网络都可以
    

    具体步骤

    ser1 ser2 ser3是之前做docker实验时的虚拟机,现在新开一台ser4,ser4的环境在开始时是纯净的.

    1.首先在每个节点清理之前做过的swarm的实验。(如果没有则这一步跳过)

    在这里插入图片描述
    在这里插入图片描述
    管理结点也移开
    在这里插入图片描述2.为每台主机添加/etc/hosts解析,这里不再赘述。
    在这里插入图片描述3.注意,我的主机是同步的,就没有再做,如果不同步,需要进行chronyd时间同步设置
    在这里插入图片描述在这里插入图片描述
    4.ser4从节点是新开的虚拟机,需要进行设置,其他不需要
    在这里插入图片描述
    在这里插入图片描述5.在ser2上配置k8s的yum源,用的是阿里云 的
    在这里插入图片描述

    在这里插入图片描述6.在这里插入图片描述在这里插入图片描述7.在这里插入图片描述8.在这里插入图片描述在这里插入图片描述9.把yum源文件传给ser3和ser4,并且安装软件
    在3个节点上安装以下软件:
    其中:kubeadm: 用来初始化集群的指令。 kubelet: 在集群中的每个节点上用来启动 pod 和 container 等。 kubectl: 用来与集群通信的命令行工具。

    在这里插入图片描述最好做个免密登录,方便传输

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述10.设置每个节点的docker开机自启动
    在这里插入图片描述

    在这里插入图片描述11.更改每个节点的cgroup驱动
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    12.
    在这里插入图片描述在这里插入图片描述13.重启docker时发现报错,原因是之前docker实验的残留,删除就好
    在这里插入图片描述在这里插入图片描述在这里插入图片描述ser3上也同样删除

    在这里插入图片描述13.将daemon文件传给ser3和ser4
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述14.发现各个节点的cgroup驱动为systemd
    在这里插入图片描述在这里插入图片描述在这里插入图片描述15.在3个节点上,关闭系统的交换分区。

    swapoff -a  
    vim /etc/fstab      #注释swap的定义
    #/dev/mapper/rhel-swap   swap                    swap    defaults        0 0    
    

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述三个节点都做,这里不再赘述
    在这里插入图片描述在这里插入图片描述
    16.在三个节点上设置k8s开机自运行,这里不再赘述
    在这里插入图片描述17.开始配置
    在这里插入图片描述18.在主节点上
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    查看镜像,下载镜像,从阿里云
    在这里插入图片描述

    在这里插入图片描述拉取镜像成功
    在这里插入图片描述19.在这里插入图片描述在这里插入图片描述发现私有仓库有问题,在ser1上重新启动

    在这里插入图片描述在这里插入图片描述20.新建仓库
    在这里插入图片描述21.批量更改标签
    在这里插入图片描述在这里插入图片描述批量上传
    在这里插入图片描述在这里插入图片描述22.ser4是新建的,还没有仓库的证书
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述23.测试仓库是否可用,拉取再删除
    在这里插入图片描述在这里插入图片描述24.删除多余的镜像
    在这里插入图片描述24.
    master节点初始化),选择一个 Pod 网络插件,并检查是否在 kubeadm 初始化过程中需要传入什么参数。设置 --Pod-network-cidr 来指定网络驱动的 CIDR。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述25.两个子节点加入集群
    在这里插入图片描述在这里插入图片描述26.master节点创建普通用户管理集群,如果需要让普通用户可以运行 kubectl,运行如下命令,这也是 kubeadm init 输出的一部分
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述27.在这里插入图片描述
    在这里插入图片描述28.此时节点是notready
    在这里插入图片描述而且还有没有running的
    在这里插入图片描述29.在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述30.在这里插入图片描述在这里插入图片描述在这里插入图片描述30.在这里插入图片描述31.在这里插入图片描述32.在这里插入图片描述在这里插入图片描述在这里插入图片描述
    33.
    在这里插入图片描述在这里插入图片描述
    至此,k8s集群部署完成。

    展开全文
  • apache camel 在诗篇建站系统的应用

    千次阅读 2013-05-18 13:35:38
    要说apache camel能做什么,好像什么都能做:),它一个庞大系统,但应用是如此简单。诗篇建站系统在tomcat容器内使用camel。主要目的增加系统集成,如果不用camel,这些功能通过bash,crontab等等也可以...

    要说apache camel能做什么,好像什么都能做:),它是一个庞大的系统,但应用是如此简单。诗篇建站系统在tomcat容器内使用camel。主要目的是增加系统的集成,如果不用camel,这些功能通过bash,crontab等等也可以完成,但是将这些功能代码都进入你的svn系统,在部署的时候不用在操作系统层次作修改,不是更方便吗?

    诗篇建站系统只是简单的使用了camel中的少量组件.

    1、timer,用来更新apache rewrite的一个map文件。

    2、file,和http4,将文章的修改提交到apache solr服务器。

    这是文章修改添加后的钩子。

    	@PostPersist
    	@PostUpdate
    	public void writeSolrXML2File(){
    		if(isAudit()){
    			SiteConfigService scf = injector.getInstance(SiteConfigService.class);
    			String fs = scf.getSorlCamelDir();
    			try {
    				File f = new File(fs,"article" + getId() + ".xml");
    				if(!f.exists())Files.createParentDirs(f);
    				Files.write(toSolrXML("add"), f , Charset.forName("UTF-8"));
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}

    public class SolrRouter extends RouteBuilder{
    	
    	@Inject
    	private SiteConfigService scf;
    
    	@Override
    	public void configure() throws Exception {
        	String ff = "file://e:/xxx";
        	String url = "http4://localhost:8080/solr/update";
        	if(!Osdetecter.isWindows()){
        		ff = "file:///usr/local/xxx/yyy";
        		url = "http4://localhost:8983/solr/update";
        	}
        	from(ff).setHeader(Exchange.HTTP_QUERY, constant("commit=true")).
        		setHeader(Exchange.CONTENT_TYPE, constant("Conntent-Type: text/xml")).
        		setHeader(Exchange.HTTP_CHARACTER_ENCODING, constant("UTF-8")).
        		setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.POST)).to(url);
        	
        	from("file:///home/xxx/dic?include=words-my.dic").
        		to("file:///usr/xx/xxx/apache-solr-3.2.0/xxx/solr/dic");
    	}
    
    }

    下面的描述,将让你体会到camel的便利。每次文章修改或者添加(当然还有删除),将需要索引的内容写入硬盘上的某个约定目录。camel看到那里有东西,就会把这个东西搬到solr服务器去。camle可以几乎可以将东西从任何源搬到任何目的地,同步或异步。

    从:文件,电子邮件服务器,数据库(sql,jpa,spring,ibits),jms,定时器信息........,太多了,写也写不完。:)


    展开全文
  • kuberneter一个生成级别的开源平台,可协调在计算机集群内核跨计算机集群的应用容器部署(调度)和执行,他具有完备的集群管理能力,包括多层次的安全防护和准入机制,多租户应用支撑能力,透明的服务注册和服务...

    1.什么是Kubernetes

    kuberneter是一个生成级别的开源平台,可协调在计算机集群内核跨计算机集群的应用容器的部署(调度)和执行,他具有完备的集群管理能力,包括多层次的安全防护和准入机制,多租户应用支撑能力,透明的服务注册和服务发现机制,内建智能负载均衡器,和强大的故障发现和自我修复能力,服务滚动升级,和在线扩容能力,可扩展的资源自动调度机制,以及多粒度的资源配置管理能力

    kubernetes是一个开放的平台,不局限于任何一种语言,没有限定的任何编程接口,所以不论使用java,Go,C++还是python编写的服务,都可以被映射为kubernetes的Service服务,并通过标准的TCP通信协议进行交互。此外,Kubernetes平台对现有的编程语言、 编程框架、中间件没有任何侵入性,因此现有的系统也很容易改造升级并迁移到Kubernetes平台上

    2.Kubernetes的优势

    1. 强大的生态圈环境(谷歌的背书)

    2. 轻松便捷的分布式系统设计、实现和运维

    3. 包含微服务架构的基础设施(如:服务注册发现、负载均衡、在线扩容、滚动升级等)

    4. 超强的横向扩展能力。在线集群扩容,能将Kubernetes集群从只包含几个Node平滑扩展到包含上百个Node的大集群

    5. 内部服务弹性扩容机制,快速扩容缩容Service的实例副本以提升或降低系统的吞吐量

    3.kubernetes基础架构

    在这里插入图片描述

    4.安装配置

    环境:

    1. 三台机器:Master、Node01、Node02
    2. 64位操作系统Linux 内核3.10以上CentOS7(Ubuntu16.04+)
    3. CPU至少2个核,推荐4核
    4. 内存最少2G,推荐8G
    5. Etcd 3.0版本
    6. Docker 18.03版本及以上
    7. Flanne(法兰绒)
      1:查看系统内版本是否为4.0,3.1版本有不可预期的问题
    uname -a
    

    在这里插入图片描述

    # 内核的第三方仓库
    $ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    

    在这里插入图片描述
    3:

    # 查看可以安装的最新的稳定内核
    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    

    在这里插入图片描述
    kernel-[lt/ml]
    lt:long term support长期支持的支线版本
    ml:main line主线版本

    # 安装最新的稳定内核
    $ yum --enablerepo=elrepo-kernel install -y kernel-lt
    
    # 查看可用的操作系统内衬相关包
    $ cat /boot/grub2/grub.cfg
    $ awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
    
    # 设置相应的Linux内核
    $ yum install -y grub2-pc
    $ grub2-set-default 0
    #重启后才会生效
    $ reboot
    

    在配置下虚拟机的hosts文件,使的相互可以使用主机名通信

    192.168.1.108 master
    192.168.1.109 docker1
    192.168.1.110 docker2
    

    至此三体虚拟机的基本环境就配置好了

    #1. 关闭swap
    $ swapoff -a
    $ sed -i '/swap / s/^\(.*\)$/#\1/g' /etc/fstab
    #2. 关闭SELinux
    $ setenforce 0
    $ sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    #3. 安装iptables
    $ yum install -y iptables-services
    $ systemctl start iptables
    $ systemctl enable iptables
    #4. 清空iptables规则
    $ iptables -F
    #5. 开启Netfilter
    $ modprobe br_netfilter
    #6. 设置ipvs支持
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf-conntrack_ipv4
    
    

    4.1K8S配置文件

    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    # 开启网桥模式
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    EOF
    sudo sysctl --system
    

    未完成。。。

    二 . docker for desktop/windows安装k8s

    首先在windows电脑下安装docker(我这个为当前最新版)
    在这里插入图片描述

    2.1填入阿里云镜像源

    https://docker.mirrors.ustc.edu.cn
    在这里插入图片描述
    默认方式国内用户是无法安装的,用户需要按照下列方式安装k8s:
    使用powershell运行下面的命令

    git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git
    cd k8s-for-docker-desktop
    #修改为docker上提示的版本
    git checkout v1.19.7
    

    镜像拉取完后启动k8s既即可在这里插入图片描述
    启动后在PowerShell中执行的显示结果为
    在这里插入图片描述

    在这里插入图片描述

    2.2配置 Kubernetes 控制台

     $ kubectl get pods -n kubernetes-dashboard
    

    如果显示的没有全部启动需要排查下原因
    在这里插入图片描述

    #查看k8s节点错误信息
    #kube-system:系统节点
    #storage-provisioner:节点名称
    kubectl describe pod storage-provisioner -n kube-system
    

    验证后如果是发现自己操作无误,那么重启docker和k8s,一定要确保都启动了

    2.3部署 Kubernetes dashboard

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
    # 或
    kubectl create -f kubernetes-dashboard.yaml
    
    # 检查 kubernetes-dashboard 应用状态
    kubectl get pod -n kubernetes-dashboard
    # 开启 API Server 访问代理
    kubectl proxy
    

    通过如下 URL 访问 Kubernetes dashboard:
    http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/overview?namespace=default

    2.4配置控制台访问令牌

    对于Windows环境

    $TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
    kubectl config set-credentials docker-for-desktop --token="${TOKEN}"
    echo $TOKEN
    

    在这里插入图片描述
    在这里插入图片描述

    参考地址:https://github.com/AliyunContainerService/k8s-for-docker-desktop#%E9%83%A8%E7%BD%B2-kubernetes-dashboard

    展开全文
  • 关键词:Tomcat部署Web应用及运行原理、Web项目(war包)层次结构、Ant脚本   前一段时间工作中,我一部分工作内容搭建测试环境:就是要将项目组java项目,通过Ant脚本(java平台下批处理命令文件,文件格式...

    关键词:Tomcat部署Web应用及运行原理、Web项目(war包)层次结构、Ant脚本

     

    前一段时间的工作中,我的一部分工作内容是搭建测试环境:就是要将项目组的java项目,通过Ant脚本(java平台下的批处理命令文件,文件格式为XML,等同于windows平台下的bat文件)将java项目打成WAR包,然后发布到中间件WebSphere(Web容器)上。当时没有也细想为什么java项目能打成WAR包,也没有理解WAR包的含义。这几天接手了另外一个java项目,发现项目中没有现成的Ant脚本(build.xml文件,位于项目根目录下),因为要在Tomcat上搭建测试环境,所以理所当然的只能用Eclipse的export功能导出war包,结果发现只有web项目才能打成war包,java项目只能打成jar包。后来才知道war:web archive ,jar:  java archive。archive是归档文件的意思。之后才明白,之前的java项目里的build.xml脚本,把项目重新编译后,按照WEB项目的结构规范重新组织项目,并且输出到一个指定位置,然后使用jar命令将组织成的Web项目打包成war。

    明早上班,未完待续....

     ------------------------------------------------------------------------------------------------------------------------------------

    之前做开发的时候太过依赖于IDE工具,没有理解项目的组织结构的含义,因为集成开发环境把项目的编译,执行过程全部屏蔽掉了。所以还是要学会不依赖IDE去组织项目。

     ------------------------------------------------------------------------------------------------------------------------------------

    一个能在web容器中运行的程序,必须符合web项目的组织规范。 

    首先,一个web项目中必须有一个WEB-INF的文件夹,其内容必须含有classes(存放src目录中的java文件按原组织形式存放编译后的class文件),lib(存放程序依赖的第三方jar包),web.xml。WEB-INF这个目录是Tomcat运行程序时最先读取的内容。

    WebRoot是IDE创建,文件夹下内容是一个完整的war包所需全部资源(Eclipse中创建Web项目时为WebContent)。

     

    展开全文
  • 所使用的应用服务器jboss 5.1和weblogic 11g,详细介绍了这两种应用服务器的安装和使用,以及如何在两大主流服务器上安装、部署java ee应用。  本书内容主要包括三部分,第一部分介绍java ee开发的基础知识,...
  • 1.5.3 组织中角色是什么 1.5.4 谁该干什么?他们之间如何协作 1.6 面向对象分析与设计例子 1.6.l 定义用况 1.6.2 定义概念模型 1.6.3 定义协作图 1.6.4 定义设计类图 1.6.5 掷骰子游戏...
  • 1 什么是事务管理 6. 1. 2 事务管理必要性 6. 1. 3 事务模型 6. 1. 4 事务种类 6. 1. 5 事务特性 6. 1. 6 总结 6. 2 EJB安全技术 6. 2. 1 为什么需要安全技术 6. 2. 2 安全技术的层次 6. 2. 3 EIS层...
  • Kubernetes是什么 功能 特点 容器集群管理系统 对计算资源进行了更高层次的抽象,减轻应用程序在云上运行的负担 快速部署应用 ...
  • Flynn它一个开源PaaS台,无论要部署的应用程序,你可以建立自己的主动性Docker容器集群的实现,能特性与组件设计大量參考了传统的PaaS平台Heroku。本文旨在从使用动机、基本对象、层次架构、功能组件、基本工作流...
  • 在Docker技术的基础上,为容器的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。Kubernetes一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩...
  • 27、GC是什么? 为什么要有GC?  GC是垃圾收集意思(Gabage Collection),内存处理是编程人员容易出现问题地方,忘记或者错误内存回收会导致程序或系统不稳定甚至崩溃,Java提供GC功能可以自动监测对象...
  • Docker介绍

    2019-04-13 16:52:23
      Docker一种容器技术,它能够将应用及其依赖环境打包,方便大规模弹性部署应用容器化后在宿主机上结构层次如下图所示,自下而上依次为: Infrastructure:宿主机硬件,如CPU、内存、磁盘和网卡等,可以...
  • KUBERNETES入门

    千次阅读 2020-08-17 19:46:02
    1.kubernetes是什么? 它是一个全新的基于容器技术的分布式系统支撑平台。 kubernetes具有完备的集群管理能力。 包括: 1:多层次的安全防护和准入机制 2:多租户应用支撑能力 3:透明的服务注册和服务发现...
  • 文章目录Kubernetes(k8s)介绍Kubernetes是什么本文结构k8s系统架构层次集群 Cluster节点 Node应用程序实例 Podk8s容器管理方法部署 Deployment服务 Service服务和标签k8s教程中出现几个软件简介...
  • spring源代码解析

    2013-06-15 18:34:33
    – 为什么会有两个不同类来装载它呢,这因为它们使用需要区别不同Servlet容器支持Serlvet版本。但不管 ContextLoaderSevlet还是 ContextLoaderListener都使用ContextLoader来完成实际...
  • 以上部分对工作流、BPMN、Activiti概念做了一个简单介绍,目的是了解Activiti究竟是什么,能做些什么…及在学习Activiti之前需要了解知识与技术。其中大部分文字来自Copy网上各种资料与文档,通过总结而来...
  • java 面试题 总结

    2009-09-16 08:45:34
    24、GC是什么? 为什么要有GC?  GC是垃圾收集意思(Gabage Collection),内存处理是编程人员容易出现问题地方,忘记或者错误内存回收会导致程序或系统不稳定甚至崩溃,Java提供GC功能可以自动监测对象...
  • Junit_Recipes中文教程

    热门讨论 2011-05-31 10:19:12
    17.2不依赖文件系统的情况下测试基于文件的应用. 17.3检验你的测试用例类的语法 17.4提取定制的断言 17.5测试一个无返回值的继承方法 17.6如果你必须测试一个private方法 附录A完整方案 A.1用XML定义一个测试...
  • springboot参考指南

    2016-07-21 12:00:22
    作为一个打包后的应用运行 iii. 19.3. 使用Maven插件运行 iv. 19.4. 使用Gradle插件运行 v. 19.5. 热交换 viii. 20. 打包用于生产的应用程序 ix. 21. 接下来阅读什么 5. IV. Spring Boot特性 i. 22. ...
  • asp.net知识库

    2015-06-18 08:45:45
    从NUnit中理解.NET自定义属性的应用(转载) 如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 ...
  • 3.1.2 继承的层次 157 3.1.3 与基类、类及对象交互 159 3.1.4 构造函数 164 3.1.5 protected作用域 169 3.1.6 事件与继承 171 3.1.7 共享方法 174 3.1.8 共享事件 176 3.1.9 创建抽象基类 176 3.2 多接口 ...
  • 3.1.2 继承的层次 157 3.1.3 与基类、类及对象交互 159 3.1.4 构造函数 164 3.1.5 protected作用域 169 3.1.6 事件与继承 171 3.1.7 共享方法 174 3.1.8 共享事件 176 3.1.9 创建抽象基类 176 ...
  • 3.1.2 继承的层次 157 3.1.3 与基类、类及对象交互 159 3.1.4 构造函数 164 3.1.5 protected作用域 169 3.1.6 事件与继承 171 3.1.7 共享方法 174 3.1.8 共享事件 176 3.1.9 创建抽象基类 176 3.2 ...
  • 3.1.2 继承的层次 157 3.1.3 与基类、类及对象交互 159 3.1.4 构造函数 164 3.1.5 protected作用域 169 3.1.6 事件与继承 171 3.1.7 共享方法 174 3.1.8 共享事件 176 3.1.9 创建抽象基类 176 3.2 多接口 ...
  • 3.1.2 继承的层次 157 3.1.3 与基类、类及对象交互 159 3.1.4 构造函数 164 3.1.5 protected作用域 169 3.1.6 事件与继承 171 3.1.7 共享方法 174 3.1.8 共享事件 176 3.1.9 创建抽象基类 176 3.2 多接口 ...
  •  《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 =================== 第一部分 核心概念 第1章 ASP.NET简介 1.1 ASP.NET的7大要点 1.1.1 要点1:ASP.NET同.NETFramework集成在一起的 ...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

容器部署是什么层次的应用