k8s(kubernetes)是一个容器编排器,没容器的话也没编排。所以他是一个容器编排的系统,主要围绕pods进行工作。pods是k8s生态中最小的调度单位,可以包容一个或者多个容器。
k8s是一个docker容器的管理工具
核心功能:
自愈:重启启动失败的容器,在节点不可用时,替换节点上的容器,对用户定义的不健康的容器会被终
,并且在容器准备好服务之前不会向其他客户端传播。
弹性伸缩:监控容器cpu的负载值。如果容器的平均值高于80%,增加容器的数量,如果平均值低于10%,减
少容器的数量。
服务的自动发现和负载:不需要自己修改应用程序,k8s自己提供了ip地址和容器的dns名称,并可以在他
们之间进行负载均衡。
滚动升级和一键回滚:k8s部署应用程序和修改配置,同时监控程序状态。如果出现问题,k8s会恢复更改
k8s常用资源
创建pod资源:
pod资源是k8s里面最小的资源,构建pod资源得至少需要两个容器组成。pod基础容器和业容器。
pod 资源类型
metadata 属性
spec 详细
ReplicationController 也叫rc资源,保证指定数量的pod始终存活,rc通过标签选择器来关联pod。
docker(码头工人)是一个用于构架、分发、运行容器的平台和工具。
让开发着打包自己的应用和依赖包放到容器中,然后发布到linux机器上,实现虚拟化。容器之间完全不会存在任何接口。几乎没有性能开销,可以很容易在机器
上运行。最重要他不以来任何语言,系统,或者框架。
build:构建,就是镜像构建
ship:运输,运输镜像 从仓库和主机运输
run:运行镜像就是一个容器
build、ship、run和镜像 运输 容器是一 一对应的
镜像如何传输呢?
这就用到了docker仓库,首先我们先要把镜像传到我们的docker仓库中,再由目的地址把docker仓库拉去,这就完成了一次传输过程。
LXC是什么?
LXC是linux container的缩写,linux cotainer容器是一种内核虚拟化技术,它可以提供轻量级虚拟化,以便隔离进程和资源,而且不需要提供指令机制和虚拟化复杂性。
docke相比于VM的优点:
1.docker支持unix/linux操作系统,同时也支持window和mac(苹果)。
2.开发者不需要关注是哪个linux系统。
3.比VM小、快 docker启动一个容器只需要几秒钟
4.docker是一个开放的平台,构建、发布、运行的应用程序。
局限性:docker只用于计算,存储交给别人。(NFS,ipsan)
docker工作流:
1.启动docker
2.下载镜像到本地
3.启动docker容器实例
提示:大家可以去注册一个dockerhub,之后会详细给大家讲解它的作用(非常重要!连docker hub账号都没有,玩什么docker!)。
docker核心技术:
1.Namespace--->实现了container的进程,网络,消息,文件系统和主机名的隔离。
2.Cgroup实现了对资源的配合和调度。 cgroup的配额,可以指定实例使用cpu个数,内存大小。
docker的特性:
1.文件系统的隔离:每个容器在完全独立的根文件系统里
2.资源隔离:系统资源,像cpu和内存等分配到不同的容器中。cgroup
3.网络隔离:每个容器有自己的虚拟接口和ip地址。
4.日志记录:docker记录每个容器的标准流,用于检索。
5.变更管理:容器文件系统的变更可以提交到新的镜像中,并可以重复使用,无需使用模板和手动配置。
6.交互式shell:docker可以分配一个虚拟终端并且关联到任何容器的标准输出上。
docker的安装方式:
1.yum -y install docker
2.yum -y install docker -engine
3.yum -y install docker -ce
docker最早的版本名叫docker和docker-engine 现在叫docker -ce和docker -ee
安装docker依赖环境 yum install -y yum -untils device -mapper -persistent -data lvm2en
配置docker -ce的yum源 yum -config -manager
安装docker yum -y install docker -ce docker -ce -cli containerd.io
开启网络转发功能:默认自动开启
关闭防火墙:iptable -NL 查看一下iptable的规则,关闭防火墙后会自动插入新规则
systemctl stop firewalld && system disable firewalld #关闭防火墙
重启docker sysctlrem restart docker #关闭防火墙后腰重新启动docker。否则ip转发包的功能无法使用。即便防火墙关闭了,docker依旧会调用内核增加规则,所以会增加iptables规则
iptables -NL #再查看一下iptable会发现很多规则。
启动服务 systemctl start docker && systemctl enable docker 启动完成后