首页 > Docker应用:Kubernetes(容器集群)

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

更多相关:

  • Kubernetes Kubernetes(简称K8s,用8代替8个字符“ubernete”)是Google开源的一个容器编排引擎,支持自动化部署、大规模可伸缩、应用容器化管理。 Kubernetes 是目前最为广泛且流行的容器编排调度系统,也是现在用来构建云原生应用编排的最佳平台。 目前所有云原生应用基本上都会基于 Kuberne...

  • 简介  它是一个全新的基于容器技术的分布式解决方案,基于强大的自动化机制解决传统系统架构中负载均衡和实施部署的问题,从而节省了30%开发成本,其次具有完备的集群能力, 包括服务注册、服务发现、故障的发现和修复、服务滚动升级、在线扩容、健康监测等能力。使用kubernetes可以是开发人员更多精力在业务实现上,同时全面的拥抱微服务架构...

  • 这段时间主要是学习了对容器的操作,包括:容器的状态:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs;还学习了对容器的资源进行限制的操作,包括:CPU(- c),内存(-m   --memory-swap),blkio IO(--device-weight...

  • 什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现...

  • 在浏览器中: 法1: location.href = `${scheme}`;//location跳转App是几乎所以情况都支持的。 法2: var ifr = document.createElement('iframe');//iframe跳转有的地方不支持 // ifr.src = `${scheme}`; // ifr.sty...

  • 智能家居APP开发 APP开发技术qq交流群:347072638 前言,随着智能硬件设备的流行,智能家居開始红火,智能家居就是家用电器的智能化。包含智能锁,灯,空调,灯,音箱等等,移动设备通过WIFI或者蓝牙4.0技术控制智能家居将是未来的一种趋势。各大平台蜂拥而入,苹果智能家居HomeKit,三星智能家居平台。小米路由器等等风...