• Win10上的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/

     

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

    出处:https://www.cnblogs.com/lanxiaoke/p/10712351.html

  • 相关阅读:
    [Delphi]ListView基本用法大全
    Delphi 数据类型列表
    什么是堆、栈?
    使用钩子函数[1]
    邻道干扰
    内存管理[1]
    c#中复制类提示“Resource”参数不支持重复项的解决办法
    转帖:IE对话框showModalDialog(模态)和showModelessDialog
    今日工作心得:一段用于验证的jQuery代码
    每个开发人员现在应该下载的十种必备工具
  • 原文地址:https://www.cnblogs.com/mq0036/p/11722413.html
Copyright © 2020-2023  润新知