阅读目录:

前言:

  终于出第三篇了,上个月就已经弄好了,一直没弄上来,步入正题之前有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版本

 kubectl version

 三、部署web镜像

1、新建WebMVC项目,修改HomeController

     public class HomeController : Controller
{
public IActionResult Index()
{
ViewData["Message"] = string.Format("IP:{0}", Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault()); return View();
} ....
}

2、编写Dockerfile

 FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app # copy csproj and restore as distinct layers
COPY *.sln .
COPY WebApp-HelloWorld/*.csproj ./WebApp-HelloWorld/
RUN dotnet restore # copy everything else and build app
COPY WebApp-HelloWorld/. ./WebApp-HelloWorld/
WORKDIR /app/WebApp-HelloWorld
RUN dotnet publish -c Release -o out FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/WebApp-HelloWorld/out ./
ENTRYPOINT ["dotnet", "WebApp-HelloWorld.dll"]

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

3、编写kubernete-web-pod.yaml

 apiVersion: v1
kind: Pod
metadata:
name: kubernete-web-pod
labels:
app: kubernete-web-pod
spec:
containers:
- name: helloworld
image: helloworld
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80

4、创建Pod

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

5、暴露容器地址

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

6、浏览器访问

搞定!

四、容器集群

1、创建 kubernete-web-replicaset.yaml

 apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: kubernete-web-replicaset
spec:
replicas: 3 # pod实例的个数
selector:
matchLabels: # 标签名称
app: kubernete-web-pod
template:
metadata:
labels:
app: kubernete-web-pod
spec:
containers:
- name: kubernete-web-replicaset
image: helloworld
imagePullPolicy: IfNotPresent

2、执行指令

 kubectl create -f kubernete-web-replicaset.yaml

3、创建Service统一入口

 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

Win10上的Docker应用:Kubernetes(容器集群)的更多相关文章

  1. Kubernetes容器集群管理环境 - Prometheus监控篇

    一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...

  2. Kubernetes容器集群管理环境 - 完整部署(中篇)

    接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...

  3. Kubernetes容器集群管理环境 - 完整部署(下篇)

    在前一篇文章中详细介绍了Kubernetes容器集群管理环境 - 完整部署(中篇),这里继续记录下Kubernetes集群插件等部署过程: 十一.Kubernetes集群插件 插件是Kubernete ...

  4. 搭建Kubernetes容器集群管理系统

    1.Kubernetes 概述 Kubernetes 是 Google 开源的容器集群管理系统,基于 Docker 构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.劢态扩缩容等功能套件. 基 ...

  5. Kubernetes容器集群管理环境 - 完整部署(上篇)

    Kubernetes(通常称为"K8S")是Google开源的容器集群管理系统.其设计目标是在主机集群之间提供一个能够自动化部署.可拓展.应用容器可运营的平台.Kubernetes ...

  6. Kubernetes——容器集群

    kuberneteskubernetes(k8s)是google的容器集群管理系统,在docker的基础之上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整的功能,提高了大规模容 ...

  7. docker学习6-docker-compose容器集群编排

    前言 实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器. 我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有 ...

  8. Kubernetes容器集群管理环境 - Node节点的移除与加入

    一.如何从Kubernetes集群中移除Node比如从集群中移除k8s-node03这个Node节点,做法如下: 1)先在master节点查看Node情况 [root@k8s-master01 ~]# ...

  9. 在 Kubernetes 容器集群,微服务项目最佳实践

    转载自:https://mp.weixin.qq.com/s/WYu3gDwKKf06f_FYbO9YRg 本文主要介绍我个人在使用 Kubernetes 的过程中,总结出的一套「Kubernetes ...

  10. Kubernetes容器集群 - harbor仓库高可用集群部署说明

    之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制:2)多harbor实例共享后端存储. 一.Harb ...

随机推荐

  1. 7种 JVM 垃圾收集器特点、优劣势及使用场景(多图)

    7种 JVM 垃圾收集器特点.优劣势及使用场景(多图)  mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达! 一.常见垃 ...

  2. jquery的Layer弹出框操作

    在layer中,我们要先获取窗口的索引,然后再进行操作. var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 $("# ...

  3. 由一个问题引起的思考:WEB开发中,使用JSON-RPC好,还是RESTful API好?

    起因: 研究zabbix的API设计风格.查看zabbix官网API文档,可以看到使用的是json-rpc:2.0 随后搜索到知乎上的一个问题讨论:https://www.zhihu.com/ques ...

  4. yum 多线程插件,apt多线程插件

    1.安装yum-axelget插件,默认 yum使用单线程下载,安装该插件后,会使用多线程下载. yum -y install yum-axelget 2. apt-fast安装 https://gi ...

  5. Python 监控脚本

    Python 监控脚本 整体通过psutil模块动态获取资源信息.下为示例图: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time: 2019- ...

  6. kubeadm初始化集群

    通过kubeadm创建集群本地测试非常方便,以下就简单记录下初始化需要的基本命令,环境准备这里不做说明 简单记录kubeadm初始化集群的基本命令 # 初始化集群 kubeadm init --kub ...

  7. HDFS 其他命令---fsck

    HDFS 其他命令 HDFS支持fsck命令用以检查各种不一致.fsck用以报告各种文件问题,如 block丢失或缺少block等.fack 命令用法如下: hdfs fsck <path> ...

  8. RabbitMQ学习之Publish/Subscribe(3)

    上一个教程中,我们创建了一个work queue. 其中的每个task都会被精确的传送到一个worker. 这节,我们将会讲把一个message传送到多个consumers. 这种模式叫做publis ...

  9. Quartz.net使用笔记

    一.需求场景:每天固定时间执行某个行为/动作. 一开始想用定时器,后来无意间发现了这个插件,感觉功能太强大了,完美解决了我的问题. 二.下载地址:https://www.quartz-schedule ...

  10. 网络编程之模拟ssh远程执行命令、粘包问题 、解决粘包问题

    目录 模拟ssh远程执行命令 服务端 客户端 粘包问题 什么是粘包 TCP发送数据的四种情况 粘包的两种情况 解决粘包问题 struct模块 解决粘包问题 服务端 客户端 模拟ssh远程执行命令 服务 ...