当前位置: 首页 > 编程日记 > 正文

Docker应用:Kubernetes(容器集群)

Docker应用:Kubernetes(容器集群)
原文:Docker应用:Kubernetes(容器集群)

阅读目录:

  • Docker应用:Hello World
  • Docker应用:Docker-compose(容器编排)
  • Docker应用:Kubernetes(容器集群)

前言:

终于出第三篇了,上个月就已经弄好了,一直没弄上来,步入正题之前有3个建议给想要学习Kubernetes的同学。

1、在国内因为防火墙的原因,你是不可能在Docker上在线开启的Kubernetes功能的。所以如果你会fan qiang上网,那万事大吉。

2、如果你离香港澳门比较近,那建议你周末抽空过去一趟,上午买罐奶粉,在店里吃个便餐顺便上网把Kubernetes功能开启了,

一天时间不用。又能旅游散心、又把事情办了,一举多得,还是万事大吉。

3、如果上面2种你都没有条件,那真的很遗憾,你要控制住你的双手,一不注意,你可能会把电脑砸掉。还要准备菊花茶,清热解毒

以免怒火攻心长痘痘,板蓝根小柴胡也要买点,不然你气愤身体忽冷忽热的容易感冒。

好了,说这些是想告诉你,你如果不能在线开启Kubernetes功能,那将浪费很多很多。。的时间,别人不知道,反正我就是断断续续的

加起来可能至少2个星期才完成。而且我后边也不会把解决过程发出来,太罗嗦,有怒气你们直接怼防火墙就对了,机智.jpg

一、Kubernetes简单介绍

1、Kubernetes简单点说就是关于Docker的集群方案,具体介绍请可以点击这里,在之前2章中都只是介绍了单机、单运用的开发情况,但是

很明显这是不够的,互联网时代,一个完整的系统可能由几十、几百个子系统组成,这不可能都部署在一台机器上,所以单机单应用的Docker

部署方案最多运用在企业内部小系统上,超出这个范围就要考虑docker集群了,这就引出Kubernetes,他就是专为Docker集群而生的。

2、Kubernetes功能模块可以分为:

  • Container(容器)
  • Pod(容器组)
  • Label(标签)
  • Replication Controller(复制控制器)
  • Service(服务)
  • Node(节点)
  • Kubernetes Master(Kubernetes主节点)

Container、Pod这2个都是关于容器的,比较好理解,Label可以理解为对Pod的标识,

Replication Controller则是实现Pod拷贝的功能,负载均衡应该就是他完成的,Node(节点),Kubernetes Master(Kubernetes主节点)

比较好理解,主要是yaml格式编写要熟练,后续讲到。

3、Kubernetes模块图示,直接摘抄了啊

 二、开启Kubernetes

1、先来看看,Kubernetes启动成功后是有2个running的,启动失败那个Kubernetes会一直提示 “** is starting”,直到永远。

2、验证一下,在PowerShell中输入以下指令查看Kubernete版本

1 kubectl version

 三、部署web镜像

1、新建WebMVC项目,修改HomeController

 1     public class HomeController : Controller
 2     {
 3         public IActionResult Index()
 4         {
 5             ViewData["Message"] = string.Format("IP:{0}", Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault());
 6 
 7             return View();
 8         }
 9 
10         ....
11     }

2、编写Dockerfile

 1 FROM microsoft/dotnet:2.1-sdk AS build
 2 WORKDIR /app
 3 
 4 # copy csproj and restore as distinct layers
 5 COPY *.sln .
 6 COPY WebApp-HelloWorld/*.csproj ./WebApp-HelloWorld/
 7 RUN dotnet restore
 8 
 9 # copy everything else and build app
10 COPY WebApp-HelloWorld/. ./WebApp-HelloWorld/
11 WORKDIR /app/WebApp-HelloWorld
12 RUN dotnet publish -c Release -o out
13 
14 
15 FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
16 WORKDIR /app
17 COPY --from=build /app/WebApp-HelloWorld/out ./
18 ENTRYPOINT ["dotnet", "WebApp-HelloWorld.dll"]

运行 docker build -t helloworld . ,要先创建镜像,后边的kubernete才能用

3、编写kubernete-web-pod.yaml

 1 apiVersion: v1
 2 kind: Pod 
 3 metadata:
 4   name: kubernete-web-pod 
 5   labels: 
 6     app: kubernete-web-pod
 7 spec: 
 8   containers: 
 9     - name: helloworld 
10       image: helloworld
11       imagePullPolicy: IfNotPresent 
12       ports:
13         - containerPort: 80 

4、创建Pod

1 kubectl create -f kubernete-web-pod.yaml
2 kubectl get pod

5、暴露容器地址

1 kubectl port-forward kubernete-web-pod 8010:80

6、浏览器访问

搞定!

四、容器集群

1、创建 kubernete-web-replicaset.yaml

 1 apiVersion: apps/v1
 2 kind: ReplicaSet 
 3 metadata:
 4   name: kubernete-web-replicaset
 5 spec:
 6   replicas: 3 # pod实例的个数
 7   selector:
 8     matchLabels: # 标签名称
 9       app: kubernete-web-pod
10   template: 
11     metadata:
12       labels:
13         app: kubernete-web-pod
14     spec:
15       containers:
16       - name: kubernete-web-replicaset
17         image: helloworld
18         imagePullPolicy: IfNotPresent 

2、执行指令

1 kubectl create -f kubernete-web-replicaset.yaml

3、创建Service统一入口

1 kubectl expose replicaset kubernete-web-replicaset --type=loadBalancer --port=8020 --target-port=80 --name kubernete-web-service

这样就构成了集群负载均衡了,我们在浏览器上试试

3、开3个窗口http://localhost:8020/

大功告成!。。。。。回家

posted on 2019-04-15 22:20 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10713750.html

相关文章:

通道应用——抠头发

通道应用——抠头发 原图: 效果图: 步骤:1、打开原图的“通道面板”,选择颜色对比分明的绿色通道,并新建一个绿色通道副本;2、选择“图像”-“调整”-“色阶”,调节色阶使得头发颜色更分明些&am…

2017 ACM/ICPC 南宁赛区小结 By JSB @ Reconquista

Statistics TYPE: Onsite ContestNAME: 2017 - ICPC - Asia NanningPLAT: pc^2TIME: 2017/11/26 09:00-14:00LOCA: Guangxi UniversityTEAM: Reconquista[shb,lsmll,jsb]RANK: 8/227 3.52%SOLVE: 8/13PENALTY: 451 ◦ A - 1 ◦ E - 123 (2) ◦ F - 8 ◦ H - 55 ◦ I - 97 (1) ◦…

用户管理系统控制台版连接数据库

建User表 CREATE TABLE user (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,pwd VARCHAR(20) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEINNODB AUTO_INCREMENT5 DEFAULT CHARSETutf8User对象(javaBean) public class User {priva…

微信小程序组件 日历

js文件 use strict;let choose_year null,choose_month null;const conf {data: {hasEmptyGrid: false,showPicker: false},onLoad() {const date new Date();const cur_year date.getFullYear();const cur_month date.getMonth() 1;const weeks_ch [ 日, 一, 二, 三, …

node编写定时任务,for循环只执行一遍的解决办法

在用node编写定时任务时候,发现for循环只执行i0这一次,就不接着循环执行了,下面贴上代码: exports.task async function(ctx){ let { app } ctx, resultArr1 [],//查询的数据库数据 resultArr2 [];//查询的数据库…

oledb读不到dbf文件内容

最近在处理一批VFP的数据库,使用OleDB方式读取一直很正常,前两天突然碰到一张表怎么也读不出数据来,害我瞎忙了一整天,在研究了DBF文件结构后发现记录前的0x20位置存储的是0x2A。 一查才知道是删除标记,我倒&#xff0…

好用的截图工具

好用的截图工具...简单好用而且不大转载于:https://blog.51cto.com/dd123/208983

“AS3.0高级动画编程”学习:第二章转向行为(上)

因为这一章的内容基本上都是涉及向量的,先来一个2D向量类:Vector2D.as (再次强烈建议不熟悉向量运算的童鞋,先回去恶补一下高等数学-07章空间解释几何与向量代数.pdf) package {import flash.display.Graphics;public class Vector2D {privat…

用Azure VM + Azure Database for MySQL搭建Web服务

仍然是一篇动手实验,实验演示如何在Azure的虚拟机内部署一个Web服务器,并且使用Azure Mysql PaaS作为本应用的数据库。此实验的目的一方面是为了演示Azure IaaS层和PaaS服务配合使用的常规操作,另一方面是为之后的文章打基础,后续…

C3P0_and_pro.properties配置文档代码

C3P0-config.xml配置文件 <c3p0-config> <!-- 默认配置&#xff0c;如果没有指定则使用这个配置 --> <default-config><property name"driverClass">com.mysql.jdbc.Driver</property><property name"jdbcUrl">jdbc:…

电视信号——行场同步

电视信号分NTSC制和PAL制两种制式, NTSC制每秒刷新60次, 而PAL制每秒刷新50次。 水平消隐&#xff1a;电子枪从左到右画出象素&#xff0c;它每次只能画一条扫描线&#xff0c;画下一条之前要先回到左边并做好画下一条扫描线的准备&#xff0c;这之间有一段时间叫做水平消隐&am…

QWidget一生,从创建到销毁事件流

版权声明&#xff1a;若无来源注明&#xff0c;Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址&#xff1a;本文标题&#xff1a;QWidget一生&#xff0c;从创建到销毁事件流 本文地址&#xff1a;http://techieliang.com/2017/11/319/ 代码较多&#xff…

事物_软件分层

事务 事务是&#xff1a;在数据库指业务处理的”一个业务“对应数据库中的多个步骤的操作。例如银行转账。 面对的问题&#xff1a;程序接受请求后&#xff0c;会至少发送两条SQL语句&#xff0c;两条语句之间会有时间的间隔&#xff0c;如果间隔时间期间Mysql服务器发生意外&a…

雷林鹏分享:jQuery EasyUI 数据网格 - 创建属性网格

jQuery EasyUI 数据网格 - 创建属性网格 属性网格(property grid)带有一个内置的 expand(展开)/collapse(合并) 按钮&#xff0c;可以简单地为行分组。您可以简单地创建一个可编辑属性的分层(hierarchical)列表。 设置 HTML url"propertygrid_data.json" showGroup&q…

as3.0中如何阻止事件冒泡?

as3.0中的事件冒泡机制有时候会很烦人&#xff0c;比如一个Sprite(方便下文描述就命名为Container吧)把另一外Sprite(称为Child吧)做为子元素套进来以后&#xff0c;如果两个Sprite都注册了Mouse_Down事件&#xff0c;要想在Child上点击鼠标时系统只响应Child的Mouse_Down事件&…

紫色回归线:雅虎中国的运筹学

共同体并不意味着一个我们可以获得享受的世界&#xff0c;而是一个我们热切希望栖息、希望重新拥有的世界。—— 齐格蒙特.鲍曼紫色回归线&#xff1a;雅虎中国的运筹学紫色是比较中性的颜色&#xff0c;但紫色在生活中却也是温柔、神秘、甚至性感的代词。当雅虎中国将主色调重…

JavaScript_上

javaScript JavaScript,简称JS&#xff0c;是Web开发中不可缺少的脚本语言的&#xff0c;不需要编译就可以运行&#xff08;解释性语言&#xff09;。它“寄生”在HTML体内&#xff0c;随网络传输到客户端在浏览器中运行。js代码可以写到html的任何地方。一般写在 body 结束标签…

java类加载的表现形式

java中的类是动态加载的&#xff0c;我们先看一下我们常用的类加载方式&#xff0c;先有一个感性的认识&#xff0c;才能进一步 深入讨论,类加载无非就是下面三种方式。 class A{} class B{} class C{} public class Loader{ public static void main(String[] args) throws Ex…

.net core在vs开发环境下脱离iis运行

.net core相比之前.net的是一个可以跨平台&#xff0c;脱离iis运行的语言&#xff0c;并且项目启动的效率要比用iis启动快&#xff0c;可以说进一步提高了开发的效率。要想自己的项目core脱离iis&#xff0c;首先选择vs启动项目的载体&#xff1a; 如下图&#xff0c;不要选择I…

Sublime遇见中文乱码问题?

今天在写demo的时候&#xff0c;突然发现html页面上的中文在浏览器上显示乱码~&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 这时&#xff0c;我根据网上的提示安装了两个插件:converttoUtf-8&#xff0c;support Gbk ~~~然而&#xff0c;好像无济于事~~ 于是…

Dynamics AX 2009 升级PreSynchnoize时的无反应的解决

问题: 安装完升级补丁后在Data upgrade cockpit窗口点击Run或Train Run按钮后Update Job没有开始&#xff0c;始终显示为Ready状态。 #1 原因&#xff1a;数据库以前已经做过升级&#xff08;例如安装过AX 2009 SP1&#xff09;并且已经存在一个DataUpdate批处理组但是针对这个…

如何 搭建 RMAN 备份平台

一&#xff0e; RMAN 的一些理论知识RMAN Catalog 和 Nocatalog 的区别http://blog.csdn.net/tianlesoftware/archive/2010/06/02/5641763.aspxRMAN 系列&#xff08;一&#xff09;---- RMAN 体系结构概述http://blog.csdn.net/tianlesoftware/archive/2010/06/09/5659701.asp…

git更新代码报错,error: The following untracked working tree files would be overwritten by ch

git忽略大小写导致的&#xff0c; git config --add core.ignorecase true 转载于:https://www.cnblogs.com/newcbs/p/10732662.html

JavaScript_下_Dom

Dom对象 Dom对象&#xff1a;Document Object Model 文档对象模型。js是用来操作html的。 一个文档必须被加载到浏览器中&#xff0c;会按照HTML的层级结构转换成一个“家谱树”称为dom树。HTML文档里的所以的标签&#xff0c;属性&#xff0c;文本都会转换成dom树上的节点。 …

HDU 4300 Clairewd’s message

一道KMP的变式 本题仍是求最大前缀后缀&#xff0c;所以仍用KMP&#xff0c;但不同的是&#xff0c;本题有一个密码转换规则&#xff0c;不过好在题目中说了两段不重合&#xff0c;那么我们就可以在中间插入一个特殊符号*&#xff0c;保证求next数组时不会越过中线&#xff0c;…

GNS3模拟VPC注意几点

网上的GNS3入门到精通视频的确做得不错。现我写一下主要几点&#xff1a;1、创建MS lookback 适配器在添加硬件那里&#xff0c;并注意IP设置要在本地网卡同一子网&#xff0c;网关不用设置的。2、GNS3 的Dynamips目录的cygwin1.dll文件替代VPCS目录中文件。3、GNS3中的模拟PC先…

Windows Phone 7 Tip (5) -- App liftcycle

在新的trainning kit 中有一个例子解释的很清楚了&#xff1a; 1. Application_Launching&#xff1a;只有在新启动程序时触发 2. Application_Closing&#xff1a;只有在推出程序时触发--只有在程序mainpage时按硬后退键 3. Application_Activated&#xff1a;从home键或者其它…

npm i和npm install的区别

最近人用npm i来直接安装模块&#xff0c;但是有会报错&#xff0c;用npm install就不会报错&#xff0c;刚开始百思不得其解&#xff0c;它俩明明是同一个东西后来查npm的帮助指令发现还是没区别&#xff0c;npm i仅仅是npm install的简写&#xff1a; 实际使用的区别点主要如…

获取服务器路径的方式 【记录】

JSP页面获取服务器路径的方式 1.basePath方式 <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()":"request.getServerPort()path"/"; %> 在url加入<%basePath%>如&…

系统安全设置部分项

1.设置合理的操作超时锁定&#xff08;10分钟以内&#xff09;&#xff0c;在恢复时需要重新鉴别。 开启连接超时 vim /etc/ssh/sshd_config ClientAliveInterval 120 //设置超时时间2分钟 ClientAliveCountMax 3 重启 /etc/init.d/sshd restart 2.设置TMOUT将自动在所设置…