k8s和docker学习
引言最近开周会的时候接触到了k8s的东西,可是作为一个小白,决定还是将这方面的知识补全补全,对以后也会有些帮助~预备知识软件开发最麻烦的事情就是配置环境,经常会被弄得吐血。软件能够运行起来用户必须要保证两件事:操作系统的设置、各种库和组件的安装,只有都正确了,软件才能够正确地运行。通常的解决方案是以下几种:虚拟机虚拟机是带环境安装的一种解决方案,它可以在一种操作系用里面运行另一种操作...
引言
最近开周会的时候接触到了k8s的东西,可是作为一个小白,决定还是将这方面的知识补全补全,对以后也会有些帮助~
预备知识
软件开发最麻烦的事情就是配置环境,经常会被弄得吐血。
软件能够运行起来用户必须要保证两件事:操作系统的设置、各种库和组件的安装,只有都正确了,软件才能够正确地运行。
通常的解决方案是以下几种:
虚拟机
虚拟机是带环境安装的一种解决方案,它可以在一种操作系用里面运行另一种操作系统,应用程序对此毫无感知。用户可以通过虚拟机来还原系统的原始环境。
缺点:
- 资源占用多(虚拟机会占用部分内存和硬盘控件)
- 冗余步骤多
- 启动步骤多,启动较慢
Linux容器
lunux容器是对进程进行隔离,在正常进程外面套了一个保护层,对于容器里面的进程来说,它接触到的资源都是虚拟的,和底层的操作系统进行了一个隔离。
容器是进程级别的
相比虚拟机的很多优势:
- 启动快:启动容器就相当于启动本机的一个进程
- 资源占用少:只占用需要的资源
- 体积小:容器只要包含用到的组件即可
docker
docker属于Linux容器的一种封装,提供简单易用的容器使用接口。
docker将应用程序与该程序的依赖打包在一个文件里,运行这个文件,就会生成一个虚拟容器。程序在这个容器里面运行,就像是在真实的物理机上运行一样。
docker的接口十分简单,用户可以方便地创建和使用容器,应用放进容器可以进行版本管理、复制、分享、修改,就和管理普通代码一样。
主要用途:
- 提供一次性的环境
- 提供弹性的云服务:因为docker容器可以随开随关,很适合动态地扩容和缩容
- 组建微服务架构:通过多个容器,一台机器就可以跑多个服务
需要了解:
- docker hub
- Dockerfile文件的写法
- 创建img文件
- 生成容器做法
- cmd命令
kubernets
docker容器技术虽然被炒的热火朝天,但是想要应用于具体的业务在编排、管理和调度等各个方面,都不容易,人们迫切需要一套管理系统,对docker及其容器进行更高级更灵活的管理
k8s是基于容器的集群管理平台;
首先几个名词的概念:
- 节点:Kubernetes集群中的一台物理机或者虚拟机。
- 集群:位于Internet防火墙后的节点,这是kubernetes管理的主要计算资源。
- 边界路由器:为集群强制执行防火墙策略的路由器。 这可能是由云提供商或物理硬件管理的网关。
- 集群网络:一组逻辑或物理链接,可根据Kubernetes网络模型实现群集内的通信。 集群网络的实现包括Overlay模型的 flannel 和基于SDN的OVS。
- 服务:使用标签选择器标识一组pod成为的Kubernetes服务。 除非另有说明,否则服务假定在集群网络内仅可通过虚拟IP访问。
一个k8s系统,通常也称为k8s集群:
master节点主要负责管理和控制,node节点是工作负载节点,里面是具体的容器
master节点:
- API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”;
- Scheduler负责对集群内部的资源进行调用,相当于“调度室”;
- Controller manage负责管理控制器,相当于“大总管”
Node节点:
- service是指一组提供相同服务的对外访问接口
- pod是kubernetes最基本的擦欧总单元,一个pod代表着一个进程,内部封装了一个or多个紧密相关的容器
- docker容器
- kubelet负责监视派到他所在node上的pod,包括创建、修改、监控、删除等
- kube-proxy,主要负责为pod对象提供代理
- fluenttd负责日志收集、存储与查询
kubernetes ingress解析:
通常情况下service和pod只可以在集群内部网络中通过IP地址访问,所有达到边界路由器的流量或被丢弃或被转发到其他地方。
internet
|
------------
[ Services ]
ingress是授权入站链接到达集群服务的规则集合。
internet
|
[ Ingress ]
--|-----|--
[ Services ]
可以在里面配置URL、负载均衡、SSL、基于名称的虚拟主机等,利用post访问api server访问ingress资源。
ingress->service->pod(k8s操作的基本单位)->container(一般都是使用docker)
istio一般是在pod里面进行更加细致的流量控制
注意:
- 你请求自己的服务是到ingress ,请求k8s的配置是api server
- ingress(可局部配置)配合ingress controller(必须全局配置)使用。
参考
更多推荐
所有评论(0)