Ⅰ pod是什么商圈
数字化生活基于通过高速网络紧密相连的各类计算机,最新出现的此类计算机是一台名为 NVIDIA DGX SuperPOD 的 AI 超级计算机。
_チ系乃魉祭氩豢? Pod(集群)。当在线观看热门电视节目、订购牛仔裤或者通过 Zoom 聊天时,便会成为这个集群的一部分。此刻,可以阅读这篇文章也要归功于 Pod。
_od 或集群,其实就是一组通过高速网络链接,而成为一个整体的计算机。 计算机架构师也许借用了这个自然界的术语。像现在的计算机集群一样,在自然界里的豌豆荚和超级海豚群展现了众多个体团结成为一个整体时所具有的能量。
Ⅱ kubernetes 如何获取dashboard cpu使用率是怎么计算的
我们先从整体上看一下Kubernetes的一些理念和基本架构, 然后从网络、 资源管理、存储、服务发现、负载均衡、高可用、rolling upgrade、安全、监控等方面向大家简单介绍Kubernetes的这些主要特性。
当然也会包括一些需要注意的问题。主要目的是帮助大家快速理解 Kubernetes的主要功能,今后在研究和使用这个具的时候有所参考和帮助。
1.Kubernetes的一些理念:
用户不需要关心需要多少台机器,只需要关心软件(服务)运行所需的环境。以服务为中心,你需要关心的是api,如何把大服务拆分成小服务,如何使用api去整合它们。
保证系统总是按照用户指定的状态去运行。
不仅仅提给你供容器服务,同样提供一种软件系统升级的方式;在保持HA的前提下去升级系统是很多用户最想要的功能,也是最难实现的。
那些需要担心和不需要担心的事情。
更好的支持微服务理念,划分、细分服务之间的边界,比如lablel、pod等概念的引入。
对于Kubernetes的架构,可以参考官方文档。
大致由一些主要组件构成,包括Master节点上的kube-apiserver、kube-scheler、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. Pod和Service,以及外部系统和Service的通信,引入Service解决。
Kubernetes的网络会给每个Pod分配一个IP地址,不需要在Pod之间建立链接,也基本不需要去处理容器和主机之间的端口映射。
注意:Pod重建后,IP会被重新分配,所以内网通信不要依赖Pod IP;通过Service环境变量或者DNS解决。
2) 服务发现及负载均衡
kube-proxy和DNS, 在v1之前,Service含有字段portalip 和publicIPs, 分别指定了服务的虚拟ip和服务的出口机ip,publicIPs可任意指定成集群中任意包含kube-proxy的节点,可多个。portalIp 通过NAT的方式跳转到container的内网地址。在v1版本中,publicIPS被约定废除,标记为deprecatedPublicIPs,仅用作向后兼容,portalIp也改为ClusterIp, 而在service port 定义列表里,增加了nodePort项,即对应node上映射的服务端口。
DNS服务以addon的方式,需要安装skydns和kube2dns。kube2dns会通过读取Kubernetes API获取服务的clusterIP和port信息,同时以watch的方式检查service的变动,及时收集变动信息,并将对于的ip信息提交给etcd存档,而skydns通过etcd内的DNS记录信息,开启53端口对外提供服务。大概的DNS的域名记录是servicename.namespace.tenx.domain, “tenx.domain”是提前设置的主域名。
注意:kube-proxy 在集群规模较大以后,可能会有访问的性能问题,可以考虑用其他方式替换,比如HAProxy,直接导流到Service 的endpints 或者 Pods上。Kubernetes官方也在修复这个问题。
3)资源管理
有3 个层次的资源限制方式,分别在Container、Pod、Namespace 层次。Container层次主要利用容器本身的支持,比如Docker 对CPU、内存、磁盘、网络等的支持;Pod方面可以限制系统内创建Pod的资源范围,比如最大或者最小的CPU、memory需求;Namespace层次就是对用户级别的资源限额了,包括CPU、内存,还可以限定Pod、rc、service的数量。
资源管理模型 -》 简单、通用、准确,并可扩展
目前的资源分配计算也相对简单,没有什么资源抢占之类的强大功能,通过每个节点上的资源总量、以及已经使用的各种资源加权和,来计算某个Pod优先非配到哪些节点,还没有加入对节点实际可用资源的评估,需要自己的scheler plugin来支持。其实kubelet已经可以拿到节点的资源,只要进行收集计算即可,相信Kubernetes的后续版本会有支持。
4)高可用
主要是指Master节点的 HA方式 官方推荐 利用etcd实现master 选举,从多个Master中得到一个kube-apiserver 保证至少有一个master可用,实现high availability。对外以loadbalancer的方式提供入口。这种方式可以用作ha,但仍未成熟,据了解,未来会更新升级ha的功能。
一张图帮助大家理解:
也就是在etcd集群背景下,存在多个kube-apiserver,并用pod-master保证仅是主master可用。同时kube-sheller和kube-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的概念,但是相对简单,而且目前的支持很有限,Kubernetes对Volume则有着清晰定义和广泛的支持。其中最核心的理念:Volume只是一个目录,并可以被在同一个Pod中的所有容器访问。而这个目录会是什么样,后端用什么介质和里面的内容则由使用的特定Volume类型决定。
创建一个带Volume的Pod:
spec.volumes 指定这个Pod需要的volume信息 spec.containers.volumeMounts 指定哪些container需要用到这个Volume Kubernetes对Volume的支持非常广泛,有很多贡献者为其添加不同的存储支持,也反映出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、heapster和storage backend(如influxdb)构建。Heapster可以在集群范围获取metrics和事件数据。它可以以pod的方式运行在k8s平台里,也可以单独运行以standalone的方式。
注意: heapster目前未到1.0版本,对于小规模的集群监控比较方便。但对于较大规模的集群,heapster目前的cache方式会吃掉大量内存。因为要定时获取整个集群的容器信息,信息在内存的临时存储成为问题,再加上heaspter要支持api获取临时metrics,如果将heapster以pod方式运行,很容易出现OOM。所以目前建议关掉cache并以standalone的方式独立出k8s平台。
Ⅲ kubernetes集群怎么访问外部的服务mysql,redis
k8s访问集群外独立的服务最好的方式是采用Endpoint方式(可以看作是将k8s集群之外的服务抽象为内部服务),以mysql服务为例:
创建mysql-endpoints.yaml
apiVersion: v1
kind: Endpoints
metadata:
name: mysql-test
namespace: default
subsets:
- addresses: - ip: 10.1.0.32 ports:
- port: 3306多个端口的话可以在此处列出123456789101112
创建mysql-service.yaml
apiVersion: v1kind: Servicemetadata:
name: mysql-testspec:
ports:
- port: 3306同样多端口需要列出
Ⅳ Google的Container Engine和Kubernetes到底是个什么关系
我先整体看Kubernetes些理念基本架构 网络、 资源管理、存储、服务发现、负载均衡、高用、rolling upgrade、安全、监控等面向家简单介绍Kubernetes些主要特性
包括些需要注意问题主要目帮助家快速理解 Kubernetes主要功能今研究使用具候所参考帮助
1.Kubernetes些理念:
用户需要关需要少台机器需要关软件(服务)运行所需环境服务需要关api何服务拆服务何使用api整合
保证系统总按照用户指定状态运行
仅仅提给供容器服务同提供种软件系统升级式;保持HA前提升级系统用户想要功能难实现
些需要担需要担事情
更支持微服务理念划、细服务间边界比lablel、pod等概念引入
于Kubernetes架构参考官文档
致由些主要组件构包括Master节点kube-apiserver、kube-scheler、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优先非配哪些节点没加入节点实际用资源评估需要自scheler plugin支持其实kubelet已经拿节点资源要进行收集计算即相信Kubernetes续版本支持
4)高用
主要指Master节点 HA式 官推荐 利用etcd实现master 选举Masterkube-apiserver 保证至少master用实现high availability外loadbalancer式提供入口种式用作ha仍未熟据解未更新升级ha功能
张图帮助家理解:
etcd集群背景存kube-apiserver并用pod-master保证仅主master用同kube-shellerkube-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平台
Ⅳ 如何在Kubernetes中暴露服务访问
Kubernetes概述
最近的一年,kubernetes的发展如此闪耀,正被越来越多的公司采纳用于生产环境的实践。同时,我们可以在最着名的开发者问答社区StackOverflow上看到k8s的问题数量的增长曲线(2015.5-2016.5),开发者是用脚投票的,从这一点看也无疑证明了k8s的火爆程度。
k8s来源于Google生产环境的实践,社区活跃度很高,在github上的Star数17k+,30k+commits,同时由Google主导CNCF基金会也在强力运作k8s的社区发展,也就在几个月前OpenStack社区宣布全面拥抱k8s,这也宣布了全球第大的开源IAAS云社区已经选择k8s作为容器的唯一解决方案。
谈到k8s,无论怎样的议题怎样的开始,我们都先介绍一个k8s整体架构(如下图所示):
etcd 作为配置中心和存储服务,保存了所有组件的定义以及状态,k8s的多个组件之间的互相交互也主要通过etcd;
kube-apiserver 提供和外部交互的接口,提供安全机制,大多数接口都是直接读写etcd中的数据;
kube-scheler 调度器,主要干一件事情,监听etcd中的pod目录变更,然后通过调度算法分配node,最后调用apiserver的bind接口将分配的node和pod进行关联;
kube-controller-manager 承担了master的主要功能,比如和CloudProvider(IaaS)交互,管理node,pod,replication,service,namespace等。
基本机制是监听etcd /registry/events下对应的事件,进行处理;kubelet 主要包含容器管理,镜像管理,Volume管理等;kube-proxy 主要用于实现k8s的service机制。提供一部分SDN功能以及集群内部的智能LoadBalancer。
本文分享的内容主要是在minion节点上的pod和service上,pod是k8s应用的具体实例抽象,而service便是这些抽象的集合。
ClusterIP & NodePort & Loadbalancer
回到本文的主题,在k8s中暴露Service访问(无论内部还是外部),都要经过kube-proxy,比如下图中我们定义一个Service,便可以通过访问Service的80端口转发到Pod的9376端口上。
kube-proxy在转发时主要有两种模式Userspace和Iptables。如下图,左侧是Userspace模式,也是kube-proxy默认的方式,所有的转发都是通过kube-proxy软件实现的;右侧是Iptables模式,所有转发都是通过Iptables内核模块实现,而kube-proxy只负责生成相应的Iptables规则。从效率上看,Iptables会更高一些,但是需要Iptables version >=1.4.11,Iptables模式在k8s1.2版本放出,是否开启使用还需要具体斟酌。
从Service本身看,有三种方式来暴露访问:
ClusterIP:使用集群内的私有ip —— 这是默认值
NodePort:除了使用cluster ip外,也将service的port映射到每个node的一个指定内部port上,映射的每个node的内部port都一样。
LoadBalancer:使用一个ClusterIP & NodePort,但是会向cloud provider申请映射到service本身的负载均衡。
LoadBalancer Provider主要有aws、azure、openstack、gce等云平台提供。相关实现可以在k8s的源码中看到,如下图所示:
Ingress
Ingress也是k8s中单独定义的对象(如下图所示),它的作用就是实现对外暴露访问的负载均衡,那么它和Service本身LoadBalancer有哪些区别呢?Ingress支持L4、L7负载均衡,LoadBalancer设计上只支持L4;Ingress基于Pod部署,并将Pod网络设置成external network;Ingress controller支持Nginx、Haproxy、GCE-L7,能够满足企业内部使用。
在实际使用时,Ingress的架构如下图所示:
但是在实际使用中,pod可能会产生漂移,由于Ingress Controller也是基于Pod部署,这样Ingress对外的IP会发生变化。在企业内部都会在防火墙上给Service的访问IP设定规则,而IP变动对这一机制是致命的,因为企业不可能经常手动修改防火墙规则。
那么我们就需要一个VIP功能,同时也要能保证Ingress的HA。我们可以考虑在Ingress Controller基础上增加一个keepalived,可以利用keepalived+haproxy的机制来完成VIP的功能。要实现这一机制,可以参考并改动k8s社区中的contrib-keepalived-vip机制。
除了以上介绍的暴露服务机制,还有Hpcloud-service-loadbalancer ,它实现了支持keepalived+nginx、F5、OpenStack Lbaas这些方式,并且支持L4 & L7负载均衡,但是与k8s社区本身的发展机制并不兼容,所以一直没有被合并到社区中。另外还有 Contrib-service-loadbalancer ,这个是社区内部正在发展的,它的想法更远大,考虑会支持Cross-namespace、 Cross-cluster这种级别的负载均衡,同时也是设计了插件机制,目前支持Haproxy,同样也支持L4 & L7负载均衡。
Rancher K8s中暴露服务访问
Rancher自己实现了一个rancher-ingress-controller,它本质上是包装了k8s-ingress-controller,在真正创建负载均衡器上它会调用Rancher Cattle API来创建Rancher自身的LB。
相关代码也是开源的,https://github.com/rancher/lb-controller,lb-controller在启动时候会指定provider为rancher,对应的实现也可在package provider/rancher中看到。
创建Ingress后,也可在Rancher UI上展现出来。
创建过程,可以看我录制这段视频教程,http://v.youku.com/v_show/id_XMTc2MDAzNjQ4OA==.html
Ⅵ 我使用的是DNSPoD解析域名的,我的服务器域名是内网192.168.0.168,用BNSPoD解
你要区分内网与外网的ip,192.168.0.x是你的内网ip,而外线访问的是需要外网络给你分配的ip。建议装个花生壳软件!
Ⅶ kubernetes最大支持多少节点
我先整体看Kubernetes些理念基本架构网络、资源管理、存储、服务发现、负载均衡、高用、rollingupgrade、安全、监控等面向家简单介绍Kubernetes些主要特性包括些需要注意问题主要目帮助家快速理解Kubernetes主要功能今研究使用具候所参考帮助1.Kubernetes些理念:用户需要关需要少台机器需要关软件(服务)运行所需环境服务需要关api何服务拆服务何使用api整合保证系统总按照用户指定状态运行仅仅提给供容器服务同提供种软件系统升级式;保持HA前提升级系统用户想要功能难实现些需要担需要担事情更支持微服务理念划、细服务间边界比lablel、pod等概念引入于Kubernetes架构参考官文档致由些主要组件构包括Master节点kube-apiserver、kube-scheler、kube-controller-manager、控制组件kubectl、状态存储etcd、Slave节点kubelet、kube-proxy及底层网络支持(用Flannel、OpenVSwitch、Weave等)看微服务架构设计目前能支持单服务横向伸缩Kubernetes未版本解决2.Kubernetes主要特性网络、服务发现、负载均衡、资源管理、高用、存储、安全、监控等面向家简单介绍Kubernetes些主要特性->由于间限能简单些另外于服务发现、高用监控些更详细介绍兴趣朋友通篇文章解1)网络Kubernetes网络式主要解决几问题:a.紧耦合容器间通信通Podlocalhost访问解决b.Pod间通信建立通信网比隧道、路由Flannel、OpenvSwitch、Weavec.PodService及外部系统Service通信引入Service解决Kubernetes网络给每Pod配IP址需要Pod间建立链接基本需要处理容器主机间端口映射注意:Pod重建IP重新配所内网通信要依赖PodIP;通Service环境变量或者DNS解决2)服务发现及负载均衡kube-proxyDNSv1前Service含字段portalippublicIPs别指定服务虚拟ip服务口机ippublicIPs任意指定集群任意包含kube-proxy节点portalIp通NAT式跳转container内网址v1版本publicIPS约定废除标记deprecatedPublicIPs仅用作向兼容portalIp改ClusterIp,serviceport定义列表增加nodePort项即应node映射服务端口DNS服务addon式需要安装skydnskube2dnskube2dns通读取KubernetesAPI获取服务clusterIPport信息同watch式检查service变及收集变信息并于ip信息提交给etcd存档skydns通etcd内DNS记录信息启53端口外提供服务概DNS域名记录servicename.namespace.tenx.domain,tenx.domain提前设置主域名注意:kube-proxy集群规模较能访问性能问题考虑用其式替换比HAProxy直接导流Serviceendpints或者PodsKubernetes官修复问题3)资源管理3层资源限制式别Container、Pod、Namespace层Container层主要利用容器本身支持比DockerCPU、内存、磁盘、网络等支持;Pod面限制系统内创建Pod资源范围比或者CPU、memory需求;Namespace层用户级别资源限额包括CPU、内存限定Pod、rc、service数量资源管理模型-》简单、通用、准确并扩展目前资源配计算相简单没资源抢占类强功能通每节点资源总量、及已经使用各种资源加权计算某Pod优先非配哪些节点没加入节点实际用资源评估需要自schelerplugin支持其实kubelet已经拿节点资源要进行收集计算即相信Kubernetes续版本支持4)高用主要指Master节点HA式官推荐利用etcd实现master选举Masterkube-apiserver保证至少master用实现highavailability外loadbalancer式提供入口种式用作ha仍未熟据解未更新升级ha功能张图帮助家理解:etcd集群背景存kube-apiserver并用pod-master保证仅主master用同kube-shellerkube-controller-manager存且伴随着kube-apiserver同间能套运行5)rollingupgradeRC始设计让rollingupgrade变更容易通替换Pod更新service实现服务断间化基本思路创建复本1新rc并逐步减少rc复本、增加新rc复本rc数量0其删除通kubectl提供指定更新镜像、替换pod间间隔rollback前执行upgrade操作同Kuberntes支持版本同部署并通lable进行区service变情况调整支撑服务Pod测试、监控新Pod工作情况6)存储家都知道容器本身般数据进行持久化处理Kubernetes容器异退kubelet简单基于原镜像重启新容器另外我同Pod运行容器经需要些容器间进行共享些数据KuberenetesVolume主要解决面两基础问题DockerVolume概念相简单且目前支持限KubernetesVolume则着清晰定义广泛支持其核理念:Volume目录并同Pod所容器访问目录端用介质面内容则由使用特定Volume类型决定创建带VolumePod:spec.volumes指定Pod需要volume信息spec.containers.volumeMounts指定哪些container需要用VolumeKubernetesVolume支持非广泛贡献者其添加同存储支持反映Kubernetes社区跃程度emptyDir随Pod删除适用于临存储、灾难恢复、共享运行数据支持RAM-backedfilesystemhostPath类似于Docker本Volume用于访问些本资源(比本Docker)gcePersistentDiskGCEdisk-GoogleCloudEngine平台用awsElasticBlockStore类似于GCEdisk节点必须AWSEC2实例nfs-支持网络文件系统rbd-RadosBlockDevice-Cephsecret用通KubernetesAPI向Pod传递敏信息使用tmpfs(aRAM-backedfilesystem)persistentVolumeClaim-抽象PV申请资源需关存储提供glusterfsiscsigitRepo根据自需求选择合适存储类型反支持够总用款适合:)7)安全些主要原则:基础设施模块应该通APIserver交换数据、修改系统状态且APIserver访问端存储(etcd)用户同角色:Developers/ProjectAdmins/Administrators允许Developers定义secrets象并pod启关联相关容器secret例kubelet要pull私镜像Kubernetes支持式:通dockerlogin.dockercfg文件进行全局授权通每namespace创建用户secret象创建Pod指定imagePullSecrets属性(统设置serviceAcouunt)进行授权认证(Authentication)APIserver支持证书、token、基本信息三种认证式授权(Authorization)通apiserver安全端口authorization应用所http请求AlwaysDeny、AlwaysAllow、ABAC三种模式其需求自实现Authorizer接口8)监控比较版本Kubernetes需要外接cadvisor主要功能node主机containermetrics抓取较新版本cadvior功能集kubelet组件kubelet与docker交互同外提供监控服务Kubernetes集群范围内监控主要由kubelet、heapsterstoragebackend(influxdb)构建Heapster集群范围获取metrics事件数据pod式运行k8s平台单独运行standalone式注意:heapster目前未1.0版本于规模集群监控比较便于较规模集群heapster目前cache式吃掉量内存要定获取整集群容器信息信息内存临存储问题再加heaspter要支持api获取临metricsheapsterpod式运行容易现OOM所目前建议关掉cache并standalone式独立k8s平台
Ⅷ apple的i pod, wi-fi网络怎么连好!
很简单,你只要把WIFI打开它就会自动搜索网络,自动连接。。。。。。呵呵,我以前也挺纠结WIFI到底是个什么东西,怎么就可以免费上网呢?其实你就当TOUCH内置了无线网卡这样来理解就行了,在有无线路由器的覆盖范围内你连上就可以上网了。
Ⅸ pod是什么意思
pod意思就是在C++中具有传统风格的数据结构。特性如下:
不管对象是否拥有类型T的有效值,如果将该对象的底层字节序列复制到一个字符数组(或者无符号字符数组)中,再将其复制回对象,那么该对象的值与原始值一样。
对于任意的POD类型T,如果两个T指针分别指向两个不同的对象obj1和obj2,如果用memcpy库函数把obj1的值复制到obj2,那么obj2将拥有与obj1相同的值。
(9)pod访问外部网络扩展阅读
pod的其他意思
作为交付凭证,pod一共分为以下四联:
1、作为出口报关的单据留存始发地;
2、贴在货物包装上随货同行,作为收件人核对货物的依据。并且在随货单据丢失时可以作为进口报关单据;
3、留存发货地速递公司作为结算运费和统计的依据;
4、交发件人作为发货凭证。
Ⅹ 请教kubernetes部署问题,pod一直处于pending状态
我们先从整体上看一下Kubernetes的一些理念和基本架构,然后从网络、资源管理、存储、服务发现、负载均衡、高可用、rollingupgrade、安全、监控等方面向大家简单介绍Kubernetes的这些主要特性。当然也会包括一些需要注意的问题。主要目的是帮助大家快速理解Kubernetes的主要功能,今后在研究和使用这个具的时候有所参考和帮助。1.Kubernetes的一些理念:用户不需要关心需要多少台机器,只需要关心软件(服务)运行所需的环境。以服务为中心,你需要关心的是api,如何把大服务拆分成小服务,如何使用api去整合它们。保证系统总是按照用户指定的状态去运行。不仅仅提给你供容器服务,同样提供一种软件系统升级的方式;在保持HA的前提下去升级系统是很多用户最想要的功能,也是最难实现的。那些需要担心和不需要担心的事情。更好的支持微服务理念,划分、细分服务之间的边界,比如lablel、pod等概念的引入。对于Kubernetes的架构,可以参考官方文档。大致由一些主要组件构成,包括Master节点上的kube-apiserver、kube-scheler、kube-controller-manager、控制组件kubectl、状态存储etcd、Slave节点上的kubelet、kube-proxy,以及底层的网络支持(可以用Flannel、OpenVSwitch、Weave等)。看上去也是微服务的架构设计,不过目前还不能很好支持单个服务的横向伸缩,但这个会在Kubernetes的未来版本中解决。2.Kubernetes的主要特性会从网络、服务发现、负载均衡、资源管理、高可用、存储、安全、监控等方面向大家简单介绍Kubernetes的这些主要特性->由于时间有限,只能简单一些了。另外,对于服务发现、高可用和监控的一些更详细的介绍,感兴趣的朋友可以通过这篇文章了解。1)网络Kubernetes的网络方式主要解决以下几个问题:a.紧耦合的容器之间通信,通过Pod和localhost访问解决。b.Pod之间通信,建立通信子网,比如隧道、路由,Flannel、OpenvSwitch、Weave。c.Pod和Service,以及外部系统和Service的通信,引入Service解决。Kubernetes的网络会给每个Pod分配一个IP地址,不需要在Pod之间建立链接,也基本不需要去处理容器和主机之间的端口映射。注意:Pod重建后,IP会被重新分配,所以内网通信不要依赖PodIP;通过Service环境变量或者DNS解决。2)服务发现及负载均衡kube-proxy和DNS,在v1之前,Service含有字段portalip和publicIPs,分别指定了服务的虚拟ip和服务的出口机ip,publicIPs可任意指定成集群中任意包含kube-proxy的节点,可多个。portalIp通过NAT的方式跳转到container的内网地址。在v1版本中,publicIPS被约定废除,标记为deprecatedPublicIPs,仅用作向后兼容,portalIp也改为ClusterIp,而在serviceport定义列表里,增加了nodePort项,即对应node上映射的服务端口。DNS服务以addon的方式,需要安装skydns和kube2dns。kube2dns会通过读取KubernetesAPI获取服务的clusterIP和port信息,同时以watch的方式检查service的变动,及时收集变动信息,并将对于的ip信息提交给etcd存档,而skydns通过etcd内的DNS记录信息,开启53端口对外提供服务。大概的DNS的域名记录是servicename.namespace.tenx.domain,“tenx.domain”是提前设置的主域名。注意:kube-proxy在集群规模较大以后,可能会有访问的性能问题,可以考虑用其他方式替换,比如HAProxy,直接导流到Service的endpints或者Pods上。Kubernetes官方也在修复这个问题。3)资源管理有3个层次的资源限制方式,分别在Container、Pod、Namespace层次。Container层次主要利用容器本身的支持,比如Docker对CPU、内存、磁盘、网络等的支持;Pod方面可以限制系统内创建Pod的资源范围,比如最大或者最小的CPU、memory需求;Namespace层次就是对用户级别的资源限额了,包括CPU、内存,还可以限定Pod、rc、service的数量。资源管理模型-》简单、通用、准确,并可扩展目前的资源分配计算也相对简单,没有什么资源抢占之类的强大功能,通过每个节点上的资源总量、以及已经使用的各种资源加权和,来计算某个Pod优先非配到哪些节点,还没有加入对节点实际可用资源的评估,需要自己的schelerplugin来支持。其实kubelet已经可以拿到节点的资源,只要进行收集计算即可,相信Kubernetes的后续版本会有支持。4)高可用主要是指Master节点的HA方式官方推荐利用etcd实现master选举,从多个Master中得到一个kube-apiserver保证至少有一个master可用,实现highavailability。对外以loadbalancer的方式提供入口。这种方式可以用作ha,但仍未成熟,据了解,未来会更新升级ha的功能。一张图帮助大家理解:也就是在etcd集群背景下,存在多个kube-apiserver,并用pod-master保证仅是主master可用。同时kube-sheller和kube-controller-manager也存在多个,而且伴随着kube-apiserver同一时间只能有一套运行。5)rollingupgradeRC在开始的设计就是让rollingupgrade变的更容易,通过一个一个替换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的概念,但是相对简单,而且目前的支持很有限,Kubernetes对Volume则有着清晰定义和广泛的支持。其中最核心的理念:Volume只是一个目录,并可以被在同一个Pod中的所有容器访问。而这个目录会是什么样,后端用什么介质和里面的内容则由使用的特定Volume类型决定。创建一个带Volume的Pod:spec.volumes指定这个Pod需要的volume信息spec.containers.volumeMounts指定哪些container需要用到这个VolumeKubernetes对Volume的支持非常广泛,有很多贡献者为其添加不同的存储支持,也反映出Kubernetes社区的活跃程度。emptyDir随Pod删除,适用于临时存储、灾难恢复、共享运行时数据,支持RAM-backedfilesystemhostPath类似于Docker的本地Volume用于访问一些本地资源(比如本地Docker)。gcePersistentDiskGCEdisk-只有在GoogleCloudEngine平台上可用。awsElasticBlockStore类似于GCEdisk节点必须是AWSEC2的实例nfs-支持网络文件系统。rbd-RadosBlockDevice-Cephsecret用来通过KubernetesAPI向Pod传递敏感信息,使用tmpfs(aRAM-backedfilesystem)persistentVolumeClaim-从抽象的PV中申请资源,而无需关心存储的提供方glusterfsiscsigitRepo根据自己的需求选择合适的存储类型,反正支持的够多,总用一款适合的:)7)安全一些主要原则:基础设施模块应该通过APIserver交换数据、修改系统状态,而且只有APIserver可以访问后端存储(etcd)。把用户分为不同的角色:Developers/ProjectAdmins/Administrators。允许Developers定义secrets对象,并在pod启动时关联到相关容器。以secret为例,如果kubelet要去pull私有镜像,那么Kubernetes支持以下方式:通过dockerlogin生成.dockercfg文件,进行全局授权。通过在每个namespace上创建用户的secret对象,在创建Pod时指定imagePullSecrets属性(也可以统一设置在serviceAcouunt上),进行授权。认证(Authentication)APIserver支持证书、token、和基本信息三种认证方式。授权(Authorization)通过apiserver的安全端口,authorization会应用到所有http的请求上AlwaysDeny、AlwaysAllow、ABAC三种模式,其他需求可以自己实现Authorizer接口。8)监控比较老的版本Kubernetes需要外接cadvisor主要功能是将node主机的containermetrics抓取出来。在较新的版本里,cadvior功能被集成到了kubelet组件中,kubelet在与docker交互的同时,对外提供监控服务。Kubernetes集群范围内的监控主要由kubelet、heapster和storagebackend(如influxdb)构建。Heapster可以在集群范围获取metrics和事件数据。它可以以pod的方式运行在k8s平台里,也可以单独运行以standalone的方式。注意:heapster目前未到1.0版本,对于小规模的集群监控比较方便。但对于较大规模的集群,heapster目前的cache方式会吃掉大量内存。因为要定时获取整个集群的容器信息,信息在内存的临时存储成为问题,再加上heaspter要支持api获取临时metrics,如果将heapster以pod方式运行,很容易出现OOM。所以目前建议关掉cache并以standalone的方式独立出k8s平台。