㈠ 我在网上认证发票时,为什么会说”登陆税局网络认证服务器失败呢”这是为什么呢谢谢
你可以换一个时间段再进行登录的,
我们这里也常出现这种情况。
㈡ Linux云计算就业前景怎么样
一、招聘企业行业分布情况
Linux应用领域非常广泛,各个行业都会应用到。在本次调查涉及的2694家Linux人才招聘企业中,IT行业需求最为广泛,其次是通信行业,然后是人力资源外包服务公司,其中人力资源外包服务公司主要是帮助其客户进行Linux相关人才招聘。
二、IT招聘企业细分行业情况
IT行业是对Linux人才需求度最高的行业,也是Linux从业者喜欢从事的行业。通过针对1731家IT企业所属细分行业的分析,可以发现,计算机软件商对Linux的需求最大,占到IT行业近五成,显著高于其它细分行业,其次是互联网与电子商务等网络科技公司。
三、招聘企业性质情况
在2694家对Linux人才有招聘需求的企业,以民营、外资和合资企业为主,占到93,1%。相比而言,国营企业仅占6.9%,招聘需求相对较小。其中,在外资企业中,欧美国家的企业所占比例20.7%,显著高于非欧美国家的13.7%。而,合资企业中,非欧美国家合资企业所占比例(10.4%)则显著高于欧美国家的合资企业(5.5%)。
四、招聘企业规模情况
在对Linux人才有招聘需求的企业中,有2071家企业对企业本身的员工人数规模进行了登记公布。调查显示, 招聘企业主要以员工规模在500人以下的中小型企业为主,所占比例达到81.0%。
五、招聘企业区域分布情况
对Linux有招聘需求的企业主要分布在高新技术产业比较集中的区域。调查显示,2694家招聘企业,有近九成的企业分布在北京市、广东省、江浙沪三大地区。这些区域包括苏州、杭州、南京、深圳、北京、广州、上海等目前国内重要的高新技术产业园区。
在本次调查中,对Linux有招聘需求的岗位共有8516个,下面我们将从岗位类型,入行条件、薪资水平、工作经验、对认证的具备要求等几个角度,对这些岗位进行统计分析,帮助Linux从业者或者准备从事Linux职业的朋友更好的规划自己的职业生涯。
1、入行要求
从事Linux领域的工作,对学历要求并不苛刻,只要具备一定的计算机和Linux基础,就可以在工作中成长起来。
在调查的8516个招聘岗位中,虽然本科学历是目前招聘企业主流的学历要求,所占比例达到78.9%。但是,很多企业在招聘员工的学历要求一栏中填的是大专,这部分企业所占比例为18.3%,有的甚至是中专、技校就可以。
造成这种状况的原因:一方面是院校教育体系中,课程设置多以Windows平台为主,熟悉Linux的人才严重缺乏;另一方面原因是企业对Linux人才需求并非苛刻,只要掌握Linux相关技能就可以胜任。
2、工作岗位类型
根据企业对招聘岗位的具体岗位职责以及工作内容,我们将这8516个招聘岗位划分为如下四个类型,首先是开发类工作岗位,包括JAVA软件开发、C语言软件开发、嵌入式软件开发、WEB开发等热门岗位,其次是运维类工作岗位,包括系统管理、网络管理、安全管理以及售前售后技术支持等热门岗位,再次是管理类工作岗位,如项目经理、信息主管、技术部门经理等,最后,其它类型的工作岗位,如Linux培训讲师等。
通过调查发现,开发类工作岗位依然是目前对Linux人才需求最大,占到招聘岗位的53.5%,其次是运维类工作岗位,占到招聘岗位总数的25.7%。
3、对证书的要求
对于那些将认证作为其IT员工发展计划组成部分的机构来说,由于它们拥有认证考核的基本技能,它们将获得从降低风险到提高员工效率的众多好处。
在本次调研涉及的21679条招聘信息中,共有839个工作岗位对应聘人员的IT认证有了明确要求 调查显示,当前微软认证和Linux认证是目前需求比较热门的认证,两者在本次调研招聘需求中,所占比例总和高达77.4%,显著高于思科认证和Oracle认证。
目前国内知名的Linux认证主要有红帽的RHCT认证和RHCE认证、红旗的RCE认证以及Novell的SUSE认证和Linux 中立认证LPI 认证。
由于红帽是目前全球最大的Linux厂商,拥有广泛的客户应用基础,而且红帽认证工程师(RHCE)认证采用了基于实际操作能力的测试方法,是有 针对性认证的良好范例,充分显示了认证对企业降低风险和改善运营所产生的作用,得到了Linux企业用户的充分认可,因此,在对认证要求中,红帽认证工程 师(RHCE)和红帽认证技师(RHCT)的所占比例显著高于其它认证。
4、招聘岗位工作经验要求
调查显示,在对Linux有招聘需求的8516个招聘岗位中,具备1至3年的Linux相关工作经验,是目前企业对应聘者主要的工作经验要求,所占比例达到76.6%。
由于Linux人才的匮乏,有些企业愿意对员工进行培养,在招聘时应届毕业生和在校学生也可,这部分的比例虽然很小,仅占1.5%。但这对高校应届毕业生以及在校大学生而言,是个很好的就业和实践机会,因此,高校学生在校期间到软件企业参与一些Linux项目或者参加Linux相关培训对今后的就业工作有很大的帮助。
5、招聘岗位薪资水平
在本次调查过程中,招聘企业在薪水方面绝大多数是采取面议的形式,仅有376个招聘岗位明确给出了薪水范围。
总体而言,薪资4000-14999元是目前Linux从业人员主流薪资水平,所占比例达到58.8%。另外,3000-4499元的薪资水平所占比例也较大到16.0%。
据了解,Linux普通网络管理人员的月薪大约5000元左右,负责编程的Linux软件工程师月薪大约在8000元到12000元之间,Linux嵌入式软件开发人员的月薪大约在12000元上。
影响Linux从业者的薪资水平的还有两个重要因素:一是从业时间长短,二是具体的工作岗位。针对376个工作岗位的薪资水平与其工作年限要求交叉分析结果,我们可以看出,从业者进入Linux行业的时间越长,薪资水平越高,而且差距也是越来越大。也就是说,进入Linux行业后,只要坚持自己的工作兴趣,获得高薪待遇是必然结果。
影响薪资水平的另一个重要因素,就是Linux从业者职业发展与其具体工作岗位。每个Linux从业者的职业发展轨迹不外乎是从基层的研发人员或者系统维护人员,发展到项目经理、信息主管或者更高层的工作岗位。
本次调查显示,运维类的工作岗位的薪资水平以2000-9999元为主,开发类工作岗位的薪资水平则以4500-14999元为主,而一旦发展到管理类工作岗位,其薪资水平的以10000元以上为主。
㈢ 娄红祥的学术科研
作为课题负责人他先后承担:国家自然科学基金4项,教育部重点科研课题,教育部优秀青年资助计划课题,教育部留学回国启动基金、山东省重点科研课题等多项,与企业合作开展的新药研发课题多项。开展了多酚类化合物等抗氧化剂与糖尿病并发症预防方面的深入研究;中国苔藓植物化学成分系统研究,对苔藓植物抗真菌、抗真菌耐药等进行了较系统的研究,有许多新的发现和突破。已完成了近40种动植物活性化合物的研究工作,发现新结构化合物100多个,发表学术论文90余篇,SCI引用近20篇。已经获得新药证书的新药3项,获得批准进行临床研究的新药5项,临床待批的新药4项,进行中的新药4项,申请中的专利9项。
承担课题:国家杰出青年基金:“苔藓植物化学成分与生物学活性意义研究”(2010)
国家基金重点项目:“苔藓植物中抗真菌活性成分的高通量发现与衍生物制备”(2008)
国家重大新药创制综合大平台 (2009)
主编出版《苔藓化学与生物学》(科学技术出版社,2012), 译著《药用天然产物生物合成》(Paul M Dewick,化学工业出版社 2008)。在国际刊物Org Lett, Nat Prod Rep, J Nat Prod, Phytochem, Cancer Lett, Bio Med Chem, ChemBiochem,Plos One等发表SCI文章近150篇,他引超过1000次;授权中国专利9项,申请美国专利1项。为主承担的两项新药研究获得新药证书,三个新药研发项目取得临床批件。 科研方向:活性天然产物研究和新药开发
1. 从苔藓植物和药用植物中发现活性萜类、多酚和生物碱类化合物
2. 天然产物的抗真菌、抗肿瘤和抗氧化活性机制研究
3. 天然抗氧化剂的心血管系统保护作用研究 1. 苔藓植物中抗真菌耐药有效成分的高通量发现与衍生物制备 国家自然科学基金重点项目(No. 30730109), 项目负责人
2. 苔类植物联苄类化合物抗真菌及逆转真菌耐药机制研究 国家重点基础研究发展计划(973计划)课题(No. 2006CB708511), 项目负责人
3. 苔类植物成分抑制真菌生物被膜形成及逆转耐药的研究 国家自然科学基金项目(No. 30672531), 项目负责人
4. 原花青素诱导心肌细胞内源性抗氧化剂分子机理和抗氧化性损伤的研究 国家自然科学基金项目(No. 30472072), 项目负责人
5. 基于糖识别的重大疾病耐药逆转剂的研究 山东省自主创新重大科技专项计划(No. 2006GG1102023), 项目负责人
6. 抗肝炎药物生物碱-有机酸复盐的研制 山东省科技攻关项目(No. Y2006C38), 项目负责人 1. Ren Dong-Mei, Guo Huai-Fang, Wang Shu-Qi, Lou Hong-Xiang*. Separation and structure determination of two diastereomeric pairs of enantiomers from Dracocephalum rupestre by high-performance liquid chromatography with circular dichroism detection. Journal of Chromatography A, 2007, 1161: 334337.
2. Ma Bin, Guo Huai-Fang, Lou Hong-Xiang*. A new lignan and two eudesmanes from Lepidozia vitrea. Helvetica Chimica Acta 2007, 90: 5862.
3. Ma Bin, Lu Zhi-Qiang, Guo Huai-Fang, Lou Hong-Xiang*. Rearranged calamenene and eudesmane sesquiterpenoids from two Chinese liverworts. Helvetica Chimica Acta 2007, 90: 5257.
4. Xie Chun-Feng, Qu Jian-Bo, Sun Bin, Guo Huai-Fang, Lou Hong-Xiang*. Dumhirone A, an unusual phenylethyl cyclohexadienone from the Chinese liverwort Dumortiera hirsuta. Biochemical Systematics and Ecology 2007, 35: 162165.
5. Shen Tao, Wan Wen-Zhu, Yuan Hui-Qing, Kong Feng, Fan Pei-Hong, Lou Hong-Xiang*. Secondary metabolites from Commiphora opobalsamum and their antiproliferative effect on human prostate cancer cells. Phytochemistry 2007, 68: 13311337.
6. Qu Jian-Bo, Xie Chun-Feng, Guo Huai-Fang, Lou Hong-Xiang*. Antifungal dibenzofuran bis(bibenzyl)s from the liverwort Asterella angusta. Phytochemistry 2007, 68: 17671774.
7. Xing Jie, Xie Chun-Feng, Lou Hong-Xiang*. Recent applications of liquid chromatography–mass spectrometry in natural procts bioanalysis. Journal of Pharmaceutical and Biomedical Analysis 2007, 44: 368378.
8. Zhan Tian-Rong, Lou Hong-Xiang*. Synthesis of azole nucleoside analogues of d-pinitol as potential antitumor agents. Carbohydrate Research 2007, 342: 86958699.
9. Qu Jian-Bo, Xie Chun-Feng, Ji Mei, Shi Yan-Qiu, Lou Hong-Xiang*. Water-soluble constituents from the liverwort Marchantia polymorpha. Helvetica Chimica Acta, 2007, 90: 21092115.
10. Zhao Gui-Sen, Liu Chuan, Wang Rui, Song Dan-Dan, Wang Xiao-Bing, Lou Hong-Xiang*, Jing Yong-Kui*. The synthesis of α,β-unsaturated carbonyl derivatives with the ability to inhibit both glutathione S-transferase P1-1 activity and the proliferation of leukemia cells. Bioorganic & Medicinal Chemistry 2007, 15: 27012707.
11. Fang Lei, Guo Huai-Fang, Lou Hong-Xiang*. Three new bibenzyl derivatives from the Chinese liverwort Marchantia polymorpha L. Helvetica Chimica Acta 2007, 90: 748752.
12. Xing Jie, Xie Chun-Feng, Qu Jian-Bo, Guo Huai-Fang, Lv Bei-Bei, Lou Hong-Xiang*. Rapid screening for bisbibenzyls in bryophyte crude extracts using liquid chromatography/ tandem mass spectrometry. Rapid Communications in Mass Spectrometry 2007, 21: 24672476.
13. Guo Huai-Fang, Xing Jie, Xie Chun-Feng, Qu Jian-Bo, Gao Yan-Hui, Lou Hong-Xiang*. Study of bis(bibenzyls) in bryophytes using electron ionization time-of-flight and electrospray ionization triple-quadrupole mass spectrometry. Rapid Communications in Mass Spectrometry 2007, 21: 13671374.
14. Yu Bei-Bei, Han Xiu-Zhen, Lou Hong-Xiang*. Oligomers of resveratrol and ferulic acid prepared by peroxidase-catalyzed oxidation and their protective effects on cardiac injury. Journal of Agricultural and Food Chemistry 2007, 55: 7753–7757.
15. Du Yu, Guo Huai-Fang, Lou Hong-Xiang*. Grape seed polyphenols protect cardiac cells from apoptosis via inction of endogenous antioxidant enzymes. Journal of Agricultural and Food Chemistry 2007, 55: 16951701. 1. 娄红祥, 王小宁. 苔藓植物化学成分研究. 天然产物化学进展; 于德泉, 吴毓林 主编; 化学工业出版社: 北京, 2005年; pp 251300.
2. 娄红祥 主编, 苔藓植物化学和生物学. 北京科学技术出版社: 北京, 2006年; pp 1363..
3. 娄红祥, 范培红. 鞣质. 实用天然有机产物化学; 吴立军 主编; 人民卫生出版社: 北京, 2007年; pp 946-983.
4. 联苄类化合物13,13-O-异丙叉基片叶苔素D及其提取分离方法与应用
5. 姜黄素磷脂复合物及其制备方法
6. 一种联苄类化合物羽苔素E及其提取分离方法与应用
7. 乙酰水杨酰基葛根素衍生物及其制备方法及应用
8. 一种治疗心脑血管系统疾病的总黄酮及其制备方法与应用
㈣ 如何查看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.紧耦合的容器之间通信,通过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平台。
㈤ kubernetes env 变量是临时的吗
我们先从整体上看一下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平台。