赞
踩
k8s用于自动部署、扩缩和管理容器化应用程序的开源系统。
简单的来说,k8s是管理docker的;
Kubernetes 使用 Docker 或其他容器运行时来管理容器的执行;
1.Docker 是一个容器运行时环境,而 Kubernetes 是一个全面的容器编排系统。
2.Docker 主要用于单个主机上的容器管理,而 Kubernetes 设计用于在多个主机上管理容器,并进行自动化运维。
3.Docker 主要通过 Dockerfile 和 docker-compose 来定义和配置容器,而 Kubernetes 使用 Pod、Deployment、Service 等概念来定义和管理容器。
4.Kubernetes 提供了服务发现、负载均衡、自动扩缩容等高级功能,而 Docker 这些功能需要借助其他工具或第三方插件实现。
(摘录于csdn:普修罗双战士)
1.需要自动化部署、扩展和管理容器化应用程序的场景。
2.需要保证容器应用程序的可靠性的场景。
3.需要支持多种容器运行时的场景。
4.需要易于使用和管理的容器编排平台的场景。
1.敏捷的应用程序创建和部署:与vm的镜像的使用相比,容器镜像的创建更加容易和高效。
2.跨开发、测试和生产环境的一致性:开发、测试、生产不会由于安装环境原因带来问题;
3.资源利用:效率高、密度大;
4.自动部署和回滚:提供可靠和频繁的容器镜像构建和部署,并提供快速和轻松的版本升级和回滚策略;
5.资源隔离
6.故障恢复:k8s可以自动检测并替换故障容器,确保服务的可靠性;
7.资源调度:k8s可以根据资源需求自动进行资源调度,确保每个应用程序都能获得足够的资源。
8.服务部署和扩展:k8s 可以帮助开发者快速部署和扩展服务,实现自动化管理;
9.网络管理:k8s可以帮助管理容器之间的网络通信,实现多哦个容器之间的沟通。
1.安装部署比较困难;
2.配置复杂;需要花费大量时间来编写和维护k8s的配置文件;
3.运维成本高;
所有服务访问的同一入口。
集群控制中枢,各个模块间信息交 互需要经过Kube-APIServer,同时他也是集群管理、 资源配置、整个集群安全机制的入口。
Controller Manager 负责管理 Kubernetes 集群中的所有资源,包括 Pod、ReplicaSet、Deployment、Service 等。
常用命令:
查看接口:kubectl api- resources |grep xxx
例:kubectl api- resources |grep job
集群的调度中心,它会根据指定一系列条 件,选择一个或一批最佳的节点,然后部署我们的 Pod;即:当运行了一个新的Pod之后,调度器会根据用户需求及node节点情况选择合适的node节点运行pod;
这包括但不限于:
* 集群的配置:如API对象(Pod、Service、ConfigMap、Secret等)的状态和配置。
* 节点信息:包括节点的状态和标识。
* Pod和服务的状态:记录了集群中各个Pod和服务的当前状态。
* 配置文件和网络信息:集群运行所需的配置文件和网络设置。
1.kubelet:
负责接收master节点上API server指令,并在node节点上执行;
负责监听节点上的Pod的状态,同时上报节 点和节点上面Pod的状态,负责和Master节点通信, 并管理节点上面的Pod。
负责Pod之间的通信和负载均衡,将指 定的流量分发到正确的机器上。查看Kube-proxy工 作模式:curl 127.0.0.1:10249/proxyMode
ipvs模式
iptables模式
Kubernetes 集群通过 Master 节点和 Node 节点之间的通信来工作。Master 节点通过 API Server 向 Node 节点发送指令,Node 节点通过 Kubelet 执行这些指令
1.deployment: 用来部署无状态的服务;特点:产生的Pod是无序的,IP是随机的,每次重启会发生变化;具有创建副本的功能,快速扩容、缩容、回滚;
2. statefulset: 用来部署有状态的服务;特点:创建的Pod都有自己的标识,故障时,它只能被拥有同一个标识的新pod取代;
k8s中,StatefulSet 是为了解决有状态服务的问题而设计的资源控制器。StatefulSet可以管理有状态服务。 前面我们讲到了Deployment、DaemonSet都只适合用来跑无状态的服务pod。
怎么理解有状态和无状态服务呢?
无状态服务:
有状态服务:
当有状态服务的pod删除时,K8s会启动一个和先前一模一样名称的pod来代替它。
* Startup(启动探测):探测容器是否正常运行
Liveness(存活性探测):判断容器是否处于runnning状态,根据重启策略决定是否重启容器
Readiness(就绪性检测):判断容器是否准备就绪并对外提供服务,将容器设置为不可用,不接受service转发的请求
是kubernetes系统中的核心概念之一。RC是Kubernetes集群实现 Pod资源对象自动化管理的基础。
简单来说,RC其实是定义了一个期望的场景,RC有以下特点: 1、组成:定义了Pod副本的期望状态:包括数量,筛选标签和模板 Pod期待的副本数量(replicas). 永远筛选目标Pod的标签选择器(Label Selector) Pod数量不满足预期值,自动创建Pod时候用到的模板(template) 2、意义:自动监控Pod运行的副本数目符合预期,保证Pod高可用的核心组件,常用于Pod的生命周期管理
主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数 。即如果有容器异常退出,会自动创建新的 Pod 来替代;而如果异常多出来的容器也会自动回收(已经成为过去时)。
Kubernetes 官方建议使用 RS(ReplicaSet ) 替代 RC (ReplicationController ) 进行部署,RS 跟 RC 没有本质的不同,只是名字不一样,并且 RS 支持集合式的 selector。
RS和RC两者功能上没有太大的区别,只不过是表现形式上不一样: RC中的Label Selector是基于等式的 RS中的Label Selector是基于集合的 因为集合的特点,这就使得Replica Set的功能更强大。
查看pod的信息:
kubectl get pod --show-labels
将原来的标签名:tier=myweb 修改为: tier=my-nginx
kubectl label pod myweb-rkqjz tier=my-nginx --overwrite=True
kubectl delete rs --all
来源:k8s官方文档 安装工具 | Kubernetes
kind 的 Quick Start 页面展示开始使用 kind 所需要完成的操作。
查看 kind 的快速入门指南
如果你关注如何安装此工具,可以按官方的 Get Started!指南操作。
查看 minikube 快速入门指南
当你拥有了可工作的 minikube 时, 就可以用它来运行示例应用了。
安装 kubeadm 展示了如何安装 kubeadm 的过程。一旦安装了 kubeadm, 你就可以使用它来创建一个集群。
minikube:作为单机运行的Kubernetes集群,直接使用官网感受一下,点击launch terminal,浏览器下发会弹出命令界面。
yum安装 优点:安装快速; 缺点:所有软件的依赖不能自己指定;不易排错;
k8s提供了四大类调度方式:
pod在整个生命周期的过程中总会处于以下几个状态:
Pending:创建了pod资源并存入etcd中,但尚未完成调度。
ContainerCreating:Pod 的调度完成,被分配到指定 Node 上。处于容器创建的过程中。通常是在拉取镜像的过程中。
Running:Pod 包含的所有容器都已经成功创建,并且成功运行起来。
Succeeded:Pod中的所有容器都已经成功终止并且不会被重启
Failed:所有容器都已经终止,但至少有一个容器终止失败,也就是说容器返回了非0值的退出状态或已经被系统终止。
Unknown:因为某些原因无法取得 Pod 的状态。这种情况通常是因为与 Pod 所在主机通信失败。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。