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版本
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/



大功告成!。。。。。回家
Docker应用:Kubernetes(容器集群)的更多相关文章
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
- Kubernetes容器集群管理环境 - 完整部署(中篇)
接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...
- Kubernetes容器集群管理环境 - 完整部署(下篇)
在前一篇文章中详细介绍了Kubernetes容器集群管理环境 - 完整部署(中篇),这里继续记录下Kubernetes集群插件等部署过程: 十一.Kubernetes集群插件 插件是Kubernete ...
- 搭建Kubernetes容器集群管理系统
1.Kubernetes 概述 Kubernetes 是 Google 开源的容器集群管理系统,基于 Docker 构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.劢态扩缩容等功能套件. 基 ...
- Kubernetes容器集群管理环境 - 完整部署(上篇)
Kubernetes(通常称为"K8S")是Google开源的容器集群管理系统.其设计目标是在主机集群之间提供一个能够自动化部署.可拓展.应用容器可运营的平台.Kubernetes ...
- Kubernetes——容器集群
kuberneteskubernetes(k8s)是google的容器集群管理系统,在docker的基础之上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整的功能,提高了大规模容 ...
- docker学习6-docker-compose容器集群编排
前言 实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器. 我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有 ...
- Kubernetes容器集群管理环境 - Node节点的移除与加入
一.如何从Kubernetes集群中移除Node比如从集群中移除k8s-node03这个Node节点,做法如下: 1)先在master节点查看Node情况 [root@k8s-master01 ~]# ...
- 在 Kubernetes 容器集群,微服务项目最佳实践
转载自:https://mp.weixin.qq.com/s/WYu3gDwKKf06f_FYbO9YRg 本文主要介绍我个人在使用 Kubernetes 的过程中,总结出的一套「Kubernetes ...
- 10分钟搭建Kubernetes容器集群平台【转】
官方提供3种方式部署Kubernetes minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境 ...
随机推荐
- python基础 ------ 集合
---恢复内容开始--- ----- 集合 使用场景:网购的订单.与商品ID 一一对应的商品信息 python的内置类型:List Tuple Dictionary ---- 列表 LI ...
- Mybatis 接口代理的实现(BeanDefinitionRegistryPostProcessor+FactoryBean)
相信在开发中,尤其是mybatis 配置操作中,我们只需要提供一个mapper 接口,然后注入到service 中,就可以进行调用. 按我们的一般逻辑来说,我们并没有进行接口的实现,应该会报空指针异常 ...
- springmvc的面试知识点总结
新的一年,开启新的篇章,欧气满满,迎接未来. 前几天回顾了spring相关的知识点,现在再来回顾下springmvc相关的知识点做一下总结. 问题总结 之前面试问题总结的那篇文章中,与springmv ...
- taro安装使用 Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (64)错误
1. 安装node.js 官网下载:https://nodejs.org/en/ 下载推荐版本: 2. Npm安装慢,可以使用cnpm,安装淘宝镜像: npm install -g cnpm - ...
- 算法 BF算法
BF算法是字符匹配的一种算法,也称暴力匹配算法 算法思想: 从主串s1的pos位置出发,与子串s2第一位进行匹配 若相等,接着匹配后一位字符 若不相等,则返回到s1前一次匹配位置的后一位,接着与s2的 ...
- day 8:open文件和with的使用
本节内容: 1,open打开文件后的几种操作 2,with和open的连用 3,flush的使用 1:open 1)r权限 f = open("D:\\auto\project\\fulls ...
- JS Object.defineProperties()方法
JS Object.defineProperties()方法 描述: Object.defineProperties()方法为目标对象同时配置多个属性. 语法: Object.defineProper ...
- python基础入门之函数基础
**python函数**一.def语名 def语名在运行的时候创建一个新的函数对象并且赋值一个变量名 一个def语句可以出现在任一语句可以出现的地方(python中所有的语名都是实时运行的,没有编译这 ...
- python基础入门之对文件的操作
**python**文件的操作1.打开文件 打开文件:open(file,mode='r') file:操作文件的路径加文件名 #绝对路径:从根目录开始的 #相对路径:从某个路径开始 mode:操作文 ...
- Mybatis中的CDATA标签
术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data). 在 XML 元素中,"<" 和 "&& ...