k8s入门学习

k8s入门学习

一些关于容器的补充概念:

docker中容器和镜像的关系是什么?docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository)。容器是由镜像实例化而来。

也可以说,镜像是文件,容器是进程。容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件。

docker 的镜像概念类似虚拟机的镜像。是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。

docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。

k8s是什么:

简单介绍:

跟不同的应用部署方案对比: 

k8s入门学习_第1张图片

集群架构:

k8s入门学习_第2张图片

重要组件:

一个节点下边可以有多个pod,一个pod里边可以有多个镜像。

我们可以将一个pod指定到一个节点去运行,也可以限定CPU和内存的用量。

k8s入门学习_第3张图片

工作负载分类:

  • Deployment

    适合无状态应用,所有Pod等价,可替代。

       为了更好地解决服务编排的问题,k8s在V1.2版本开始,引入了deployment控制器,值得一提         的是,这种控制器并不直接管理pod,

       而是通过管理replicaset来间接管理pod,即:deployment管理replicaset,replicaset管理                 pod。所以deployment比replicaset的功能更强大。

  • StatefulSet

    有状态的应用,适合数据库这种类型(像一般我们部署的应用,都是不需要存储数据的。不需要记住状态的,所以可以随意扩充副本,每个副本都是一样的,可替代的,而像数据库、Redis这类有状态的,则不能随意扩充副本)

  • DaemonSet

    在每一个节点上跑一个Pod,可以用来做节点监控、节点日志收集等

  • Job & CronJob

    Job用来表达的是一次性任务,而CronJob会根据时间规划反复运行,即定时任务

现存问题:

1.每次只能访问一个Pod,没有负载均衡自动转发到不同Pod

2.访问还要端口转发

3.Pod重创后IP变了,名字也变了

以上可以用Service解决

Service:

介绍:

用标签关联起来所有的Pod,访问的时候通过serbice去访问,将请求发到service上面,service经过负载均衡自动转发到不同的Pod上面。

k8s入门学习_第4张图片

 创建Service:

在k8s里边,都可以用yml文件配置信息,然后创建,service也是。

有以下三种类型:

ClusteIP:

默认的,仅在集群内部可用

NodePort:

暴露端口到节点,提供了集群外部访问的入口,端口范围固定:30000~32726

LoadBalancer:

需要负载均衡(通常都需要云服务商提供)

会额外生成一个IP对外服务

k8s支持的负载均衡器:负载均衡器

StatefulSet:

当前先学习如何使用k8s搭建部署普通的应用,对于数据库这种有状态的类型,后边学习到再补充,先把框架放在这里。

数据持久化:

部署完数据库后,数据还没有保存到数据持久盘里边去,重启之后,pod重建数据就会丢失掉。

k8s集群不会为你处理数据的存储,但我们可以为数据库挂载一个磁盘来保证数据的安全。

可以选择云存储、本地磁盘、NFS。

  • 本地磁盘:可以挂载某个节点上的目录,但是需要限定pod在这个节点上运行

  • 云存储:不限定节点,不受集群影响,安全稳定;需要云服务商提供,裸机集群是没有的。

  • NFS:不限定节点,不受集群影响。

你可能感兴趣的:(docker,kubernetes,容器)