×

kubernetes与docker的关系

kubernetes与docker的关系(k8s为啥不建议用docker了)

admin admin 发表于2023-01-07 05:56:57 浏览46 评论0

抢沙发发表评论

本文目录

k8s为啥不建议用docker了


因为社区认为Containerd 作为 Kubernetes 的容器运行时目前已经足够成熟,无需再通过 dockershim 使用 Docker 作为 Kubernetes 的容器运行时。

这也标志着 Docker 为 Kubernetes 提供一个现代化的容器运行时的承诺最终兑现了。

在 Kubernetes 提出 CRI 时,有人建议在 Docker 中实现它。但是这种方式也会带来一个问题,即使 Docker 实现了 CRI,但它仍然不是一个单纯的容器运行时,它本身包含了大量的非 “纯底层容器运行时” 所具备的功能。

Docker一问世就广受好评,发展迅速,于是在2015年左右,不满足只做容器引擎的Docker开始尝试提供容器编排能力,对单机场景推出了Docker Compose,对集群场景推出了Docker Swarm。

也就在同年,Google推出了同样具备容器编排能力的Kubernetes,并在与Docker Swarm和Apache Mesos的三方大战中大获全胜。于是在之后的一段时间里形成了“集群容器编排用Kubernetes,单机容器引擎用Docker”的潜规则。


简述Kubernetes和Docker的关系


Docker提供容器的生命周期管理和Docker镜像构建运行时容器。它的主要优点是将将软件/应用程序运行所需的设置和依赖项打包到一个容器中,从而实现了可移植性等优点。
Kubernetes用于关联和编排在多个主机上运行的容器。我推荐你去看看时速云,他们是一家全栈云原生技术服务提供商,提供云原生应用及数据平台产品,其中涵盖容器云PaaS、DevOps、微服务治理、服务网格、API网关等。大家可以去体验一下。 如果我的回答能够对您有帮助的话,求给大大的赞。

k8s和docker区别是什么


k8s和docker区别有以下几点:

1、k8s是一种开放源码的容器集群管理系统,能够实现自动化部署、扩展容器集群、维护等功能。

2、Docker是一种开放源码的应用容器引擎,开发者可以将他们的应用和依赖打包在一个可移植的容器中,发布到流行的Linux机器上,也可以实现虚拟化。

3、k8s的全称kubernetes。它是一个完整的分布式系统支撑平台,集群管理功能齐全。Kubernetes同时提供完善的管理工具,涵盖了开发、部署、测试、运行监控等各个环节。

4、Docker是一种开放源码的应用容器引擎,允许开发人员将其应用和依赖包打包成可移植的镜像,然后发布到任何流行的Linux或Windows机器上,也能实现虚拟化。该容器完全使用沙箱机制,彼此之间没有任何接口。


docker-compose配置文件和kubernetes配置文件的区别


docker-compose up -d 出来是个容器。 dockerfile build出来是个镜像。 dockerfile是自己定义自己的镜像作用。 docker-compose是指定镜像的启动文件,挂载目录,环境变量等等。。

Google的Container Engine和Kubernetes到底是个什么关系


我先整体看Kubernetes些理念基本架构 网络、 资源管理、存储、服务发现、负载均衡、高用、rolling upgrade、安全、监控等面向家简单介绍Kubernetes些主要特性
包括些需要注意问题主要目帮助家快速理解 Kubernetes主要功能今研究使用具候所参考帮助
1.Kubernetes些理念:
用户需要关需要少台机器需要关软件(服务)运行所需环境服务需要关api何服务拆服务何使用api整合
保证系统总按照用户指定状态运行
仅仅提给供容器服务同提供种软件系统升级式;保持HA前提升级系统用户想要功能难实现
些需要担需要担事情
更支持微服务理念划、细服务间边界比lablel、pod等概念引入
于Kubernetes架构参考官文档
致由些主要组件构包括Master节点kube-apiserver、kube-scheduler、kube-controller-manager、控制组件kubectl、状态存储etcd、Slave节点kubelet、kube-proxy及底层网络支持(用Flannel、OpenVSwitch、Weave等)
看微服务架构设计目前能支持单服务横向伸缩 Kubernetes 未版本解决
2.Kubernetes主要特性
网络、服务发现、负载均衡、资源管理、高用、存储、安全、监控等面向家简单介绍Kubernetes些主要特性 -》 由于间限能简单些
另外于服务发现、高用监控些更详细介绍兴趣朋友通篇文章解
1)网络
Kubernetes网络式主要解决几问题:
a. 紧耦合容器间通信通 Pod localhost 访问解决
b. Pod间通信建立通信网比隧道、路由Flannel、Open vSwitch、Weave
c. PodService及外部系统Service通信引入Service解决
Kubernetes网络给每Pod配IP址需要Pod间建立链接基本需要处理容器主机间端口映射
注意:Pod重建IP重新配所内网通信要依赖Pod IP;通Service环境变量或者DNS解决
2) 服务发现及负载均衡
kube-proxyDNS v1前Service含字段portalip publicIPs 别指定服务虚拟ip服务口机ippublicIPs任意指定集群任意包含kube-proxy节点portalIp 通NAT式跳转container内网址v1版本publicIPS约定废除标记deprecatedPublicIPs仅用作向兼容portalIp改ClusterIp, service port 定义列表增加nodePort项即应node映射服务端口
DNS服务addon式需要安装skydnskube2dnskube2dns通读取Kubernetes API获取服务clusterIPport信息同watch式检查service变及收集变信息并于ip信息提交给etcd存档skydns通etcd内DNS记录信息启53端口外提供服务概DNS域名记录servicename.namespace.tenx.domain, “tenx.domain“提前设置主域名
注意:kube-proxy 集群规模较能访问性能问题考虑用其式替换比HAProxy直接导流Service endpints 或者 PodsKubernetes官修复问题
3)资源管理
3 层资源限制式别Container、Pod、Namespace 层Container层主要利用容器本身支持比Docker CPU、内存、磁盘、网络等支持;Pod面限制系统内创建Pod资源范围比或者CPU、memory需求;Namespace层用户级别资源限额包括CPU、内存限定Pod、rc、service数量
资源管理模型 -》 简单、通用、准确并扩展
目前资源配计算相简单没资源抢占类强功能通每节点资源总量、及已经使用各种资源加权计算某Pod优先非配哪些节点没加入节点实际用资源评估需要自scheduler plugin支持其实kubelet已经拿节点资源要进行收集计算即相信Kubernetes续版本支持
4)高用
主要指Master节点 HA式 官推荐 利用etcd实现master 选举Masterkube-apiserver 保证至少master用实现high availability外loadbalancer式提供入口种式用作ha仍未熟据解未更新升级ha功能
张图帮助家理解:
etcd集群背景存kube-apiserver并用pod-master保证仅主master用同kube-shedullerkube-controller-manager存且伴随着kube-apiserver 同间能套运行
5) rolling upgrade
RC 始设计让rolling upgrade变更容易通替换Pod更新service实现服务断间化基本思路创建复本1新rc并逐步减少rc复本、增加新rc复本rc数量0其删除
通kubectl提供指定更新镜像、替换pod间间隔rollback 前执行upgrade操作
同 Kuberntes支持版本同部署并通lable进行区service变情况调整支撑服务Pod测试、监控新Pod工作情况
6)存储
家都知道容器本身般数据进行持久化处理Kubernetes容器异退kubelet简单基于原镜像重启新容器另外我同Pod运行容器经需要些容器间进行共享些数据Kuberenetes Volume主要解决面两基础问题
Docker Volume概念相简单且目前支持限KubernetesVolume则着清晰定义广泛支持其核理念:Volume目录并同Pod所容器访问目录端用介质面内容则由使用特定Volume类型决定
创建带VolumePod:
spec.volumes 指定Pod需要volume信息 spec.containers.volumeMounts 指定哪些container需要用Volume KubernetesVolume支持非广泛贡献者其添加同存储支持反映Kubernetes社区跃程度
emptyDir 随Pod删除适用于临存储、灾难恢复、共享运行数据支持 RAM-backed filesystemhostPath 类似于Docker本Volume 用于访问些本资源(比本Docker)
gcePersistentDisk GCE disk - Google Cloud Engine 平台用
awsElasticBlockStore 类似于GCE disk 节点必须 AWS EC2实例 nfs - 支持网络文件系统
rbd - Rados Block Device - Ceph
secret 用通Kubernetes API 向Pod 传递敏信息使用 tmpfs (a RAM-backed filesystem)
persistentVolumeClaim - 抽象PV申请资源需关存储提供
glusterfs
iscsi
gitRepo
根据自需求选择合适存储类型反支持够总用款适合 :)
7)安全
些主要原则:
基础设施模块应该通API server交换数据、修改系统状态且API server访问端存储(etcd)
用户同角色:Developers/Project Admins/Administrators
允许Developers定义secrets 象并pod启关联相关容器
secret 例kubelet要pull 私镜像Kubernetes支持式:
通docker login .dockercfg 文件进行全局授权
通每namespace创建用户secret象创建Pod指定 imagePullSecrets 属性(统设置serviceAcouunt )进行授权
认证 (Authentication)
API server 支持证书、token、基本信息三种认证式
授权 (Authorization)
通apiserver安全端口authorization应用所http请求
AlwaysDeny、AlwaysAllow、ABAC三种模式其需求自实现Authorizer接口
8)监控
比较版本Kubernetes需要外接cadvisor主要功能node主机container metrics抓取较新版本cadvior功能集kubelet组件kubelet与docker交互同外提供监控服务
Kubernetes集群范围内监控主要由kubelet、heapsterstorage backend(influxdb)构建Heapster集群范围获取metrics事件数据pod式运行k8s平台单独运行standalone式
注意: heapster目前未1.0版本于规模集群监控比较便于较规模集群heapster目前cache式吃掉量内存要定获取整集群容器信息信息内存临存储问题再加heaspter要支持api获取临metricsheapsterpod式运行容易现OOM所目前建议关掉cache并standalone式独立k8s平台