1.äºè®¡å课ç¨
2.什么是源码K8S?
3.BlueStore源码分析之Cache
4.戴尔p13f不认u盘
äºè®¡å课ç¨
ã壹ã äºè®¡ç®éè¦å¦ä»ä¹è¯¾ç¨ææ¨èå
æ¨èä¸åéçäºè®¡ç®è¯¾ç¨ï¼å¦åéäºè®¡ç®æç¨åºæ¥çå¦åé½è¯´æ¾å·¥ä½å¾å®¹æã
ãè´°ã Linuxäºè®¡ç®è¯¾ç¨å¹è®é½æåªäºå 容
linuxäºè®¡ç®å¤å¹è®è¯¾ç¨
第1é¶æ®µå¶ é¶åºç¡å ¥é¨
第2é¶æ®µ Linuxç³»ç»ç®¡ç&shellç¼ç¨
第3é¶æ®µ ç¾ä¸çº§è®¿é®éé群å®æ
第4é¶æ®µ åä¸çº§è®¿é®éæ ¸å¿é群å®æ
第5é¶æ®µ ä¸åæ ¸å¿ææ¯çåºå±æ¯æï¼äºè®¡ç®é群
第6é¶æ®µ å°ç¡ è°·ä¸æ课ç¨ï¼å¤§æ°æ®è¿ç»´
第7é¶æ®µ Pythonèªå¨ååæ¯ä¸æ导
linuxäºè®¡ç®å¹è®è·¯çº¿
ãåã äºè®¡ç®çåºç¡è¯¾ç¨
äºè®¡ç®æ¯ä¸å¥ç³»ç»ç解å³æ¹æ¡ãéè¦ä»å®è§çºµåå»çï¼åå°å¾®è§å ·ä½çæ个äºè®¡ç®çå项æä¸æ¯ãå®å±å为åºç¡æ¶æå±ï¼IaaSï¼ï¼å¹³å°æ¶æå±ï¼PaaSï¼ï¼è½¯ä»¶æ¶æå±ï¼SaaSï¼ï¼æå¡æ¶æå±ï¼BPaaSï¼ãæ¯ä¸ªå±é¢ç建设å®æ½è¿ç¨åå¯ä»¥ç¬ç«åå¨ï¼å¹¶æ²¡æå ååªåï¼å建åªåçå å顺åºãå ¶ä¸IaaSæ¯å¿ ç»ä¹è·¯ã纵åææ¡ä½äºï¼å横åç»åå»çãæ¯å¦ï¼IaaSå为åå¨æ± ï¼è´è½½åè¡¡æ± ï¼èç¹è®¡ç®æ± ï¼å ¶ä¸ååç»å为å°åæºè®¡ç®æ± ï¼æå¡å¨è®¡ç®æ± çãåææä½ç³»ç»çæ¬çä¸ååç»åï¼çã
ãèã ç°å¨å¦ä¹ äºè®¡ç®è¯¾ç¨é½éè¦å¦ä»ä¹å 容ï¼ä»¥åæ¾ä»ä¹å·¥ä½å
ä½ å¥½ï¼äºè®¡ç®æ¯æªæ¥äºèç½çåå±è¶å¿ï¼ç°å¨å ¥è¡äºè®¡ç®è¡ä¸ï¼å°±æå³çæªæ¥çé«èªåå©ï¼ä¸ºæ¤å¾å¤äººä¼éæ©åå ä¸ä¸çå¦ä¹ å¿«éå ¥è¡ãäºè®¡ç®æ¶µççç¥è¯ç¹å¾å¤ï¼åºç¨é¢åä¹æ¯è¾å¹¿æ³ï¼æ¯ä¸ä¸ªé常好çéæ©ãåªè¦ææ¡çæ£çæè½ï¼äºè®¡ç®å°±ä¸èªç¶ä¸æé®é¢ã
å¦æä½ æ³è¦ä¸ä¸çå¦ä¹ äºè®¡ç®ï¼æ´å¤éè¦çæ¯ä»åºæ¶é´åç²¾åï¼ä¸è¬å¨2Wå·¦å³ï¼4-6个ææ¶é´ä¸çãåéç课ç¨å¾ä¸éï¼ä½ å¯ä»¥æ ¹æ®èªå·±çå®é éæ±å»å®å°çä¸ä¸ï¼å 好好è¯å¬ä¹åï¼åéæ©éåèªå·±çãåªè¦åªåå¦å°çä¸è¥¿ï¼åéèªç¶ä¸ä¼å·®ã
ãä¼ã äºè®¡ç®æ¶æå¸è¯¾ç¨è¦æä¹å¦ä¹
ï¼1ï¼Linuxä¹ç¾è¯¾æ¶
æ¬é¶æ®µè¯¾ç¨ä¼å¸¦é¢å¦åè¿å ¥Linuxçä¸çï¼æ·±å ¥å¦ä¹ 强大çLinuxæä½ç³»ç»ï¼å»ºç«æå¡å¨æä½æç»´ï¼å¹å »è¯å¥½çè¿ç»´ææ³ã
ï¼2ï¼å¼ºå¤§çLinuxæå¡å¨è¯¾æ¶
æ¬é¶æ®µè¯¾ç¨æ£å¼å¦ä¹ Linuxä¸åç§ç½ç»æå¡ï¼å½åäºèç½ä¸ç»å¤§å¤æ°çåºç¨åè½ï¼å¦ç½ç«ãè§é¢ã游æãè´ç©ãé®ä»¶ãä¸è½½çï¼é½éè¦ä¸åçLinuxæå¡æ¯æã
ï¼3ï¼ç©è½¬é群ä¸äºè®¡ç®ææ¯è¯¾æ¶
æ¬é¶æ®µè¯¾ç¨è®²æé群æ¶æãè´è½½åè¡¡ã代çæå¡ãåå¸å¼åå¨ã主ä»å¤ä»½ãäºè®¡ç®ãèæåãHadoopçåç§é«å¤§ä¸çç¥è¯ï¼å 容涵çäºäºè®¡ç®æ¶æå¸å·¥ä½ä¸æéçææææ¯
ï¼4ï¼ç½ç»å®å ¨ææ¯ä¸é¡¹ç®å®è·µè¯¾æ¶
æ¬é¶æ®µè¯¾ç¨æä½ ä¸ä¸çç½ç»å®å ¨ææ¯ï¼å®å ¨é²æ¤å·¥å ·ãé²ç«å¢ãå ¥ä¾µæ£æµçã
å¦ä¹ äºè®¡ç®ï¼è¿æ¯å å¼è¿å¥½
ãéã äºè®¡ç®ä¸»è¦å¦åªäºè¯¾ç¨
äºè®¡ç®æ¯åºäºäºèç½çç¸å ³æå¡çå¢å ã使ç¨å交ä»æ¨¡å¼ï¼é常æ¶åéè¿äºèç½æ¥æä¾å¨æææ©å±ä¸ç»å¸¸æ¯èæåçèµæºãäºæ¯ç½ç»ãäºèç½çä¸ç§æ¯å»è¯´æ³ãè¿å»å¨å¾ä¸å¾å¾ç¨äºæ¥è¡¨ç¤ºçµä¿¡ç½ï¼åæ¥ä¹ç¨æ¥è¡¨ç¤ºäºèç½ååºå±åºç¡è®¾æ½çæ½è±¡ãå æ¤ï¼äºè®¡ç®çè³å¯ä»¥è®©ä½ ä½éªæ¯ç§ä¸äº¿æ¬¡çè¿ç®è½åï¼æ¥æè¿ä¹å¼ºå¤§ç计ç®è½åå¯ä»¥æ¨¡ææ ¸çç¸ãé¢æµæ°ååååå¸åºåå±è¶å¿ãç¨æ·éè¿çµèãç¬è®°æ¬ãææºçæ¹å¼æ¥å ¥æ°æ®ä¸å¿ï¼æèªå·±çéæ±è¿è¡è¿ç®ã
ç®åæ们çäºè®¡ç®ç课ç¨ä¸ºç±æµ å ¥æ·±ã循åºæ¸è¿çå®æ´è¯¾ç¨ä½ç³»ï¼å æ¬ç»åLinuxçç½ç»åºç¡å®æãLinuxç³»ç»é ç½®åæå¡æ·±åº¦è§£æãShellèæ¬èªå¨åè¿ç»´é¡¹ç®å¼åãå¼æºæ°æ®åºMySQL DBAæ¶æåä¼åã主æµWeb æå¡å¨Nginxæ¶æä¼åã大åç½ç«é«å¹¶å项ç®LVSå®ææ¹æ¡ãé«å¯ç¨é群ææ¯ãåå¸å¼åå¨ææ¯Cephãå®å ¨é²å¾¡ææ¯ãæ§è½ä¼åæ¹æ¡ãPythonèªå¨åè¿ç»´å¼åææ¯ãç§æäºå¹³å°ææ¯KVM ãOpenstackã容å¨ææ¯Dockerçã
äºè®¡ç®å¦ä¹ 课ç¨å¤§çº²å¦ä¸ï¼
1. Linuxäºè®¡ç®ç½ç»ç®¡çå®æ
2. Linuxç³»ç»ç®¡çåæå¡é ç½®å®æ
3. Linux Shellèªå¨åè¿ç»´ç¼ç¨å®æ
4. å¼æºæ°æ®åºSQL/NOSQLè¿ç»´å®æ
5. 大åç½ç«é«å¹¶åæ¶æåèªå¨åè¿ç»´é¡¹ç®
6. ç½ç«å®å ¨æ¸éæµè¯åæ§è½è°ä¼é¡¹ç®å®æ
7. å ¬æäºè¿ç»´ææ¯é¡¹ç®å®æ
8. ä¼ä¸ç§æäºæ¶æåè¿ç»´å®æ
9. Pythonèªå¨åè¿ç»´å¼ååºç¡
. Pythonèªå¨åè¿ç»´å¼å项ç®å®æ
ãæã äºè®¡ç®éä¿è§£éï¼äºè®¡ç®éè¦å¦ä»ä¹è¯¾ç¨
äºè®¡ç®éä¿ç讲ï¼äºç«¯æ¶è®¾ä¸å°æ§è½å¼ºå²çæå¡å¨ï¼æ¯å¦ï¼æ ¸çCPU ãG çå åï¼N个T çåå¨çãå¨è¿æ ·æçé ç½®å¾å¯ä½çæå¡å¨ä¸éè¿èææºææ¯ï¼å建å å个èææºï¼ä»å®¿ä¸»æå¡å¨ç¡¬ä»¶é ç½®ä¸åååºèµæºé é¢ï¼ï¼å®¢æ·æºéè¿âè¿ç¨æ¡é¢åè®®âæâè¿ç¨æ§å¶åè®®âè¿æ¥å°èææºï¼è¿æ ·ä½ å°±å¯ä»¥å¨æ¬å°å®¢æ·æºä½¿ç¨è¿å°è¿ç¨çèææºã æ以çè¿ç®(计ç®)é½æ¯å¨è¿å°èææºä¸å®æçï¼æ¬å°å®¢æ·æºåªæ¯è¾å ¥ä¸è¾åºï¼éæ¬å°è®¡ç®ï¼ãå¦ä¹ äºè®¡ç®å¯ä»¥å»ççopenstack ,å¤äºè§£KVM çã
ãæã Linuxäºè®¡ç®è¯¾ç¨å ·ä½å¦ä»ä¹
ä¼å°±ä¸linuxäºè®¡ç®å¹è®å¦é¢çåäºå¹å »å¤æ¹ä½åå±çäºè®¡ç®äººæï¼è¯¾ç¨è®¾ç½®ç§å¦åçï¼é¢å0åºç¡äººåï¼æå¦å 容涵çåå广æ³ï¼å¤§å项ç®å®è®ï¼å®ææ§æ´å¼ºã
ä¼å°±ä¸Linuxäºè®¡ç®çå¹è®è¯¾ç¨å 容ä¸è¬å为å 个é¶æ®µï¼ç¬¬ä¸é¶æ®µä¸»è¦å¦ä¹ ç½ç»åºç¡ï¼å æ¬è®¡ç®æºç½ç»(以太ç½ãTCP/IPç½ç»æ¨¡å)ãäºè®¡ç®ç½ç»(ç½ç»QoSã交æ¢æºä¸è·¯ç±å¨)ï¼é å¤æä¼ä¸çº§é¡¹ç®å®æï¼IPå°åé ç½®ä¸DNS解æã
第äºé¶æ®µå°å¦ä¹ Linuxåºç¡ï¼å æ¬Linuxæä½ç³»ç»(æ件æéãä½ä¸æ§å¶ä¸è¿ç¨ç®¡ç)以åLinuxé«çº§ç®¡ç(SedãAwkå·¥å ·ãæºç ç¼è¯)ãä¼ä¸çº§é¡¹ç®å®æ为ï¼äºæ°æ®ä¸å¿ä¸»æºCPUèµæºå©ç¨çå®æ¶ç»è®¡ãåæç³»ç»ã
第ä¸é¶æ®µå¦ä¹ Linuxè¿ç»´èªå¨åï¼ä¼ä¸çº§é¡¹ç®å®æ为Python+Shellå®ç°ä¼ä¸çº§FTPæ件ç»ä¸ç®¡çã
第åé¶æ®µæ¯æ°æ®åºè¿ç»´ç®¡ççå¦ä¹ ï¼ä¼ä¸çº§é¡¹ç®å®æï¼MySQL Galeraé«å¯ç¨é群ç¯å¢é¨ç½²ãå¼æ¥æ¶æ¯éåé群RabbitMQé¨ç½²ä¸è¿ç»´ã
第äºé¶æ®µçå¹è®å 容为ä¼ä¸çº§äºæ¶æ管çä¸ç»¼åå®æ(PaaS+TaaS)ï¼é¡¹ç®è®ç»çæ¯åºäºLAMPæ¶æå®ç°äºè®¡ç®PaaSå¹³å°å ¸ååºç¨é¨ç½²ä¸è¿ç»´ï¼éè¿Nginxå®ç°åä¸çº§å¹¶å访é®å¤çã
æåä¸ä¸ªé¶æ®µå°±æ¯å°±ä¸æ导ï¼ä»ç®åãé¢è¯æå·§çå±é¢å©å¦åæåï¼å¹å »å¦åæ²é表达è½åï¼è®©å¦åæ¸ æ°äºè§£èä¸åå±è§åï¼æç¡®èªèº«å®ä½ï¼æ¾å°éåèªèº«åå±çå·¥ä½ã
ãçã 大æ°æ®äºè®¡ç®è¯¾ç¨è§é¢æç¨
ä¼ä¸ä¸é½ä½¿ç¨Linuxæ¥æ建é¨ç½²å¤§æ°æ®é¡¹ç®ãå¦ä¹ çæå ³ç³»åæ°æ®åºçMysql以åOracle,äºè§£å¤§æ°æ®çæºå¤´ï¼æ°æ®ä»æä½èæ¥ï¼å¦ä½éææ´å大æ°æ®,æè½æ´å¥½çäºè§£å¤§æ°æ®ãæ£ä¸å¹³å°å¤§æ°æ®å¼å课ç¨äºè§£hadoopçç¨éï¼å¿«éæ建hadoopå®éªç¯å¢ï¼ä¸ºä»¥åå¦ä¹ åæ建大æ°æ®é¡¹ç®æä¸åå®åºç¡ã
ãæ¾ã äºè®¡ç®ä¸å¤§æ°æ®ä¸ä¸ç主è¦è¯¾ç¨æ¯ä»ä¹
大æ°æ®çåºç¡ç¥è¯ï¼ç§æ®ç±»çï¼ä¸ªäººå»ä¹°æ¬ä¹¦å°±è¡äºï¼å¤§æ°æ®æ¶ä»£è¿æ ·ç书å¾å¤ä»ç»ç大æ°æ®çã
å¦å¤å¤§æ°æ®çææ¯ï¼å¦æ°æ®ééï¼æ°æ®ååï¼åºç¡æ¶æï¼æ°æ®å¤çï¼ç»è®¡åæï¼æ°æ®ææï¼æ¨¡åé¢æµï¼ç»æåç°ã
大æ°æ®åæææä¸å¤çã移å¨å¼åä¸æ¶æã软件å¼åãäºè®¡ç®çå沿ææ¯çã
主修课ç¨ï¼é¢å对象ç¨åºè®¾è®¡ãHadoopå®ç¨ææ¯ãæ°æ®ææãæºå¨å¦ä¹ ãæ°æ®ç»è®¡åæãé«çæ°å¦ãPythonç¼ç¨ãJAVAç¼ç¨ãæ°æ®åºææ¯ãWebå¼åãLinuxæä½ç³»ç»ã大æ°æ®å¹³å°æ建åè¿ç»´ã大æ°æ®åºç¨å¼åãå¯è§å设计ä¸å¼åçã
æ¨å¨å¹å »å¦çç³»ç»ææ¡æ°æ®ç®¡çåæ°æ®æææ¹æ³ï¼æä¸ºå ·å¤å¤§æ°æ®åæå¤çãæ°æ®ä»åºç®¡çã大æ°æ®å¹³å°ç»¼åé¨ç½²ã大æ°æ®å¹³å°åºç¨è½¯ä»¶å¼ååæ°æ®äº§åçå¯è§åå±ç°ä¸åæè½åçé«çº§ä¸ä¸å¤§æ°æ®ææ¯äººæã
()äºè®¡å课ç¨æ©å±é 读ï¼
åºç¨é¢å
大æ°æ®ææ¯è¢«æ¸éå°ç¤¾ä¼çæ¹æ¹é¢é¢ï¼å»çå«çãåä¸åæãå½å®¶å®å ¨ãé£åå®å ¨ãéèå®å ¨çæ¹é¢ãå¹´ï¼ä»å¤§æ°æ®ä½ä¸ºå½å®¶éè¦çæç¥èµæºåå å¿«å®ç°åæ°åå±çé«åº¦ï¼å¨å ¨ç¤¾ä¼å½¢æâç¨æ°æ®æ¥è¯´è¯ãç¨æ°æ®æ¥ç®¡çãç¨æ°æ®æ¥å³çãç¨æ°æ®æ¥åæ°âçæåæ°å´ä¸æ¶ä»£ç¹å¾ã
大æ°æ®ç§å¦å°æ为计ç®æºç§å¦ã人工æºè½ææ¯ï¼èæç°å®ãåä¸æºå¨äººãèªå¨é©¾é©¶ãå ¨è½çèªç¶è¯è¨å¤çï¼ãæ°åç»æµååä¸ãç©èç½åºç¨ãè¿æå个人æ社ç§é¢ååå±çæ ¸å¿ã
什么是K8S?
k8s是什么?Kubernetes 是一个可移植的,可扩展的集群开源容器编排平台,用于管理容器化的源码工作负载和服务,方便了声明式配置和自动化。集群它拥有一个庞大且快速增长的源码生态系统。Kubernetes 的集群光电开关源码服务,支持和工具广泛可用。源码
为什么现在流行使用容器?集群
早期: 在物理服务器上面部署应用程序存在资源分配问题,因为其不能在物理服务器中的应用程序定义资源边界,导致应用程序资源利用不足而无法扩展.
后来: 为了解决该问题,引入了虚拟化技术, 虚拟化技术是指允许你在单个物理服务器的 CPU 上运行多个虚拟机,可以让多个应用程序在虚拟机之间进行隔离,具有一定的安全性, 每一个虚拟机就是一台完整的计算机, 在虚拟化硬件之上运行所有组件.
现在: 多数在物理服务器上面部署应用程序都是采kubectl用容器的方式,容器类似于虚拟机,它们都具有自己的文件系统、CPU、源码内存、集群进程空间等,源码 且由于它们与基础架构分离,因此可以跨云和 OS 发行版本进行移植。集群基于此特点被企业大范围使用.
为什么需要使用k8s容器?源码
若出现这样一个环境: 在生产环境中如果一个容器发生故障,则我们需要手动去启动另外一个容器,这样的操作是对我们的管理员来说是不太方便的, 若一个容器出现故障,另一个容器可以自动启动容器接管故障的容器,这样是最好的.
k8s就可以实现该效果,Kubernetes 提供了一个可弹性运行分布式系统的框架。 Kubernetes 会满足你的集群扩展要求、故障转移、源码部署模式等。
k8s功能: 服务发现和负载均衡, 存储编排, 自动部署和回滚, 自动完成装箱计算, 自我修复, 密钥与配置管理
名词解释
secret
Secret有三种类型:
Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的目录中;/run/secrets/kubernetes.io/serviceaccountOpaque:base编码格式的Secret,用来存储密码、密钥等;kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。k8s的组成
k8s是由组件,API,对象等组成.
包含所有相互关联组件的 Kubernetes 集群图如下:
组件
控制平面组件kube-apiserver: 为k8s的api服务器,公开了所有Kubernetes API, 其他所有组件都必须通过它提供的API来操作资源数据.保证集群状态访问的安全隔离集群状态访问的方式和后端存储实现的方式:API Server是状态访问的方式,不会因为后端存储技术etcd的改变而改变。etcd: 为k8s的键值数据库,保存了k8s所有集群数据的后台数据库。kube-scheduler: 收集和分析当前Kubernetes集群中所有Node节点的资源(内存、CPU)负载情况,然后依此分发新建的Pod到Kubernetes集群中可用的节点。 kube-controller-manager: 在主节点上运行 控制器 的组件。cloud-controller-manager: 云控制器管理器是指嵌入特定云的控制逻辑的 控制平面组件Node 组件kubelet: 一个在集群中每个节点(node)上运行的代理。 它保证容器(containers)都 运行在 Pod 中。kube-proxy: kube-proxy是集群中每个节点上运行的网络代理,维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。容器运行时: 负责运行容器的软件。插件(Addons)DNS: 集群 DNS 是suricata源码安装一个 DNS 服务器,和环境中的其他 DNS 服务器一起工作,它为 Kubernetes 服务提供 DNS 记录。Web 界面(仪表盘): Dashboard 是Kubernetes 集群的通用的、基于 Web 的用户界面。容器资源监控: 容器资源监控 将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供用于浏览这些数据的界面。集群层面日志: 集群层面日志 机制负责将容器的日志数据 保存到一个集中的日志存储中,该存储能够提供搜索和浏览接口。 APIKubernetes 控制面 的核心是 API 服务器。 API 服务器负责提供 HTTP API,以供用户、集群中的不同部分和集群外部组件相互通信。
对象
Kubernetes对象是Kubernetes系统中的持久实体。Kubernetes使用这些实体来表示集群的状态.
具体来说,他们可以描述:
容器化应用正在运行(以及在哪些节点上)这些应用可用的资源关于这些应用如何运行的策略,如重新策略,升级和容错Kubernetes 架构
Kubernetes 架构由节点,控制面到节点通信, 控制器, 云控制器管理器组成.
master 流程图
Kubecfg将特定的请求,比如创建Pod,发送给Kubernetes Client。Kubernetes Client将请求发送给API server。API Server根据请求的类型,比如创建Pod时storage类型是pods,然后依此选择何种REST Storage API对请求作出处理。REST Storage API对的请求作相应的处理。将处理的结果存入高可用键值存储系统Etcd中。在API Server响应Kubecfg的请求后,Scheduler会根据Kubernetes Client获取集群中运行Pod及Minion/Node信息。依据从Kubernetes Client获取的信息,Scheduler将未分发的Pod分发到可用的Minion/Node节点上。 节点节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。 每个节点包含运行 Pods 所需的服务, 这些 Pods 由 控制面 负责管理.
节点上的传奇源码假设组件包括 kubelet、 容器运行时以及 kube-proxy。
节点状态
可以使用 kubectl 来查看节点状态和其他细节信息:
kubectl describe node <�节点名称>
一个节点包含以下信息:
地址HostName:由节点的内核设置。可以通过 kubelet 的 —hostname-override 参数覆盖。ExternalIP:通常是节点的可外部路由(从集群外可访问)的 IP 地址。InternalIP:通常是节点的仅可在集群内部路由的 IP 地址。状况(conditions 字段描述了所有 Running 节点的状态)Ready 如节点是健康的并已经准备好接收 Pod 则为 True;False 表示节点不健康而且不能接收 Pod;Unknown 表示节点控制器在最近 node-monitor-grace-period 期间(默认 秒)没有收到节点的消息DiskPressure为True则表示节点的空闲空间不足以用于添加新 Pod, 否则为 FalseMemoryPressure为True则表示节点存在内存压力,即节点内存可用量低,否则为 FalsePIDPressure为True则表示节点存在进程压力,即节点上进程过多;否则为 FalseNetworkUnavailable为True则表示节点网络配置不正确;否则为 False容量与可分配描述节点上的可用资源:CPU、内存和可以调度到节点上的 Pod 的个数上限。信息关于节点的一般性信息,例如内核版本、Kubernetes 版本(kubelet 和 kube-proxy 版本)、 Docker 版本(如果使用了)和操作系统名称。这些信息由 kubelet 从节点上搜集而来。控制面到节点通信
节点到控制面apiserver在安全的 HTTPS 端口()上监听远程连接请求以客户端证书的形式将客户端凭据提供给 kubelet控制面到节点API 服务器到 kubelet连接用于获取 Pod 日志挂接(通过 kubectl)到运行中的 Pod提供 kubelet 的端口转发功能。(注: 在连接状态下, 默认apiserver 不检查 kubelet 的服务证书。容易受到中间人攻击,不安全.)apiserver 到节点、Pod 和服务SSH 隧道(目前已经废弃)产生原因: 若无服务证书, 又要求避免在非受信网络或公共网络上进行连接,则可以在apiserver 和 kubelet 之间使用ssh隧道.Kubernetes 支持使用 SSH 隧道来保护从控制面到节点的通信路径。Konnectivity 服务为ssh隧道的替代品, Konnectivity 服务提供 TCP 层的代理,以便支持从控制面到集群的通信。控制器
在 Kubernetes 中,控制器通过监控集群 的公共状态,并致力于将当前状态转变为期望的状态。
举个例子: 当前室内温度为度, 我们通过调节遥控器,使其温度上升至度, 这度到度的变化即为让其从当前状态接近期望状态。
控制器模式分为直接控制和通过API服务器来控制.
云控制器管理器
云控制器管理器是指嵌入特定云的控制逻辑的 控制平面组件。 云控制器管理器允许您链接聚合到云提供商的应用编程接口中, 并分离出相互作用的组件与您的集群交互的组件。
云控制器管理器中的控制器包括:
节点控制器节点控制器负责在云基础设施中创建了新服务器时为之 创建 节点(Node)对象。 节点控制器从云提供商获取当前租户中主机的信息。执行功能:针对控制器通过云平台驱动的 API 所发现的每个服务器初始化一个 Node 对象利用特定云平台的信息为 Node 对象添加注解和标签获取节点的网络地址和主机名检查节点的健康状况。路由控制器Route 控制器负责适当地配置云平台中的分组卷积 源码路由,以便 Kubernetes 集群中不同节点上的 容器之间可以相互通信。服务控制器服务(Service)与受控的负载均衡器、 IP 地址、网络包过滤、目标健康检查等云基础设施组件集成。 服务控制器与云驱动的 API 交互,以配置负载均衡器和其他基础设施组件。Kubernetes 安全性
云原生安全
云原生安全4个C: 云(Cloud)、集群(Cluster)、容器(Container)和代码(Code)
云原生安全模型的每一层都是基于下一个最外层,代码层受益于强大的基础安全层(云、集群、容器)。我们无法通过在代码层解决安全问题来为基础层中糟糕的安全标准提供保护。
基础设施安全
Kubetnetes 基础架构关注领域
建议
通过网络访问 API 服务(控制平面)
所有对 Kubernetes 控制平面的访问不允许在 Internet 上公开,同时应由网络访问控制列表控制,该列表包含管理集群所需的 IP 地址集。
通过网络访问 Node(节点)
节点应配置为 仅能 从控制平面上通过指定端口来接受(通过网络访问控制列表)连接,以及接受 NodePort 和 LoadBalancer 类型的 Kubernetes 服务连接。如果可能的话,这些节点不应完全暴露在公共互联网上。
Kubernetes 云访问提供商的 API
每个云提供商都需要向 Kubernetes 控制平面和节点授予不同的权限集。为集群提供云提供商访问权限时,最好遵循对需要管理的资源的最小特权原则。Kops 文档提供有关 IAM 策略和角色的信息。
访问 etcd
对 etcd(Kubernetes 的数据存储)的访问应仅限于控制平面。根据配置情况,你应该尝试通过 TLS 来使用 etcd。更多信息可以在 etcd 文档中找到。
etcd 加密
在所有可能的情况下,最好对所有驱动器进行静态数据加密,但是由于 etcd 拥有整个集群的状态(包括机密信息),因此其磁盘更应该进行静态数据加密。南方精良源码
集群组件安全
运行的应用程序的安全性关注领域访问控制授权(访问 Kubernetes API)认证方式应用程序 Secret 管理 (并在 etcd 中对其进行静态数据加密)Pod 安全策略服务质量(和集群资源管理)网络策略Kubernetes Ingress 的 TLS 支持容器安全
容器安全性关注领域容器搭建配置(配置不当,危险挂载, 特权用户)容器服务自身缺陷Linux内核漏洞镜像签名和执行代码安全
代码安全关注领域仅通过 TLS 访问(流量加密)限制通信端口范围第三方依赖性安全静态代码分析动态探测攻击(黑盒)Kubernetes架构常见问题
Kubernetes ATTACK 矩阵
信息泄露
云账号AK泄露
API凭证(即阿里云AccessKey)是用户访问内部资源最重要的身份凭证。用户调用API时的通信加密和身份认证会使用API凭证.
API凭证是云上用户调用云服务API、访问云上资源的唯一身份凭证。
API凭证相当于登录密码,用于程序方式调用云服务API.
k8s configfile泄露
kubeconfig文件所在的位置:
$HOME/.kube/config
Kubeconfig文件包含有关Kubernetes集群的详细信息,包括它们的位置和凭据。
云厂商会给用户提供该文件,以便于用户可以通过kubectl对集群进行管理. 如果攻击者能够访问到此文件(如办公网员工机器入侵、泄露到Github的代码等),就可以直接通过API Server接管K8s集群,带来风险隐患。
Master节点SSH登录泄露
常见的容器集群管理方式是通过登录Master节点或运维跳板机,然后再通过kubectl命令工具来控制k8s。
云服务器提供了通过ssh登陆的形式进行登陆master节点.
若Master节点SSH连接地址泄露,攻击者可对ssh登陆进行爆破,从而登陆上ssh,控制集群.
容器组件未鉴权服务
Kubernetes架构下常见的开放服务指纹如下:
kube-apiserver: , kubectl proxy: , kubelet: , , dashboard: docker api: etcd: , kube-controller-manager: kube-proxy: , kube-scheduler: weave: , , kubeflow-dashboard:注:前六个重点关注: 一旦被控制可以直接获取相应容器、相应节点、集群权限的服务
了解各个组件被攻击时所造成的影响
组件分工图:
假如用户想在集群里面新建一个容器集合单元, 流程如下:
用户与 kubectl进行交互,提出需求(例: kubectl create -f pod.yaml)kubectl 会读取 ~/.kube/config 配置,并与 apiserver 进行交互,协议:/service-account/cloud-native-academy/cloud-native-applications/cloud-native-infrastructure/
商业产品,它在 年被 Ctrix 以超过2亿美元的价格收购,然后今年捐款 Apache 基金会。该产品的开源引发了市场对策 IaaS 一些关于发展路线的争议,比如它与另一个开源产品 OpenStack 竞争与合作关系?OpenStack 是由 Rackspace 和 NASA 一个主导发展 IaaS,它拥有更大的用户群,包括 HP,IBM,Dell 和 Redhat 等待大公司,以下列出 CloudStack 与 OpenStack 一些比较。
对比项CloudStackOpenStacklicenseApache 2.0 授权协议可免费用于商业模式Apache 2.0 授权协议可免费用于商业模式支持的 HypervisorsKVM,XEN,Oracle VM,vSphere 和 Bare MetalKVM,XEN,(有限支持 Hyper-V,ESX,PowerVM)支持的 Networking ModelOpenFlow,VLAN 和 Flat networksVLAN,Flat,Flat DHCP支持的StorageNFS,Cluster LVM,Rados Block Device(Ceph),Local StorageiSCSI,Ceph,NFS,Local Storage 和 Swift(对象存储)包括诺基亚的客户群,Zynga,阿尔卡特包括日本电报电话公司塔塔 NASA,Rackspace,HP,红帽,Piston开发语言java为主python主要与亚马逊兼容 EC2 API是是
基本上,云计算只是一种把手 IT 资源是提供服务的手段。几乎所有 IT 资源可以作为云服务提供:应用程序、计算能力、存储容量、联网、编程工具,以及通信服务和合作工具。几乎所有 IT 资源可以作为云服务提供:应用程序、计算能力、存储容量、联网、编程工具,以及通信服务和合作工具。
云计算最早为 Google、Amazon 其他扩建基础设施的大型互联网服务提供商。因此,产生了一种大规模扩展和水平分布的系统资源,抽象为虚拟资源 IT 作为连续配置和共享资源管理的服务。
就最终用户而言,云计算意味着没有硬件采购成本、软件许可证或升级、新员工或顾问、设施租赁、基础设施投资,没有隐性成本。只是一种根据使用情况测量的订购费或固定订购费。用你需要的量,只按用量付费。
1.二:基础设施即服务:LAAS
以基础设施为服务 (IaaS) 处于最低水平,是提供基本存储和计算能力作为标准化服务的手段。服务器、存储系统、交换机、路由器等系统 (例如,通过虚拟化技术) 特定类型的工作负荷处理 — 服务器/存储扩展从批处理到峰值负载。
最著名的商业示例是 Amazon Web 服务 (AWS),其 EC2 和 S3 提供基本的计算和存储服务。阿里云、腾讯云、百度云、金山云等国内代表。
1.3:IAAS虚拟化的好处:
资源利用率较高 — 在虚拟化之前,企业数据中心的服务器和存储利用率通常低于 % (实际上,利用率通常是 % 到 %)。通过虚拟化,工作负载包装可以转移到空闲或使用不足的系统,这意味着现有系统可以集成,从而延迟或避免购买更多的服务器容量。
资源整合 — 虚拟化使多个集成 IT 资源是可能的。虚拟化除了服务器和存储集成外,还提供集成系统架构、应用程序基础设施、数据库、接口、网络、桌面系统甚至业务流程,从而节约成本,提高效率。
节约电能/成本 — 企业级数据中心运行所需的电能不再无限使用,成本呈螺旋式上升趋势。每花一美元在服务器硬件上,电费就会增加一美元 (包括服务器运行和散热的成本)。利用虚拟化进行整合,可以降低总能耗,节省大量资金。
节约空间 — 服务器扩展仍然是大多数企业数据中心面临的一个严重问题。扩大数据中心并不总是一个好的选择,因为每平方米的空间平均会增加很多成本。将多个虚拟系统集成到较少的物理系统中,虚拟化可以缓解空间压力。
灾难恢复 (Disaster recovery) /业务连续 (Business Continuity) — 虚拟化可以提高整体服务利用率,为灾难恢复解决方案提供新的选择。
1.4 :Cloudstack 介绍:
CloudStack云计算平台具有高可用性和扩展性CloudStack 它是一个开源云操作系统,可以帮助用户使用自己的硬件提供类似的Amazon EC2公共云服务。CloudStack构建和谐的环境,可以组织和协调用户的虚拟资源。
Cloudstack支持管理大多数主流hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等。
Cloudstack 部署图如下:
Zone:Zone 对应于现实中的数据中心,它是 CloudStack 最大的单元。
就包含关系而言,一个 zone 包含多个 pod,一个 pod 包含多个 cluster,一个 cluster 包含多个 host。
提供点(Pods):
提供点通常代表机架,机柜内的主机在同一个子网中,每个区域必须包含一个或多个提供点,提供点包含主机和主存储服务器, CloudStack 预留内部管理通信配置 IP 地址范围。预留的 IP 云中的每区域的范围必须是唯一的。
集群(Clusters):
Cluster 它是由多个主机组成的集群。
同一个cluster中间的主机硬件相同,相同 Hypervisor,与共享相同的存储。同一个 cluster 中间的虚拟机可以无中断地从一个主机转移到另一个主机。
集群由一个或多个宿主机和一个或多个主要存储服务器组成。集群的大小取决于下层虚拟机软件。在大多数情况下,基本上没有建议。当使用VMware时,每个VMware集群都被vCenter 服务器管理。管理员必须在本产品中注册vCenter。每个zone下面可以有多个vCenter服务器。每个vCenter多个服务器可以管理VMware集群
主机(Hosts):
Host 是运行的虚拟机(VM)主机。
宿主机是一台独立的计算机。主机运行客人虚拟机,并提供相应的计算资源。每个宿主机都配备了运行来宾虚拟机的虚拟机软件。例如,一个打开了kvm支持服务器,思杰XenServer服务器,或者一个ESXi服务器可用作宿主机。
宿主机在CloudStack属于部署中最小的组织单位。宿主机包含在集群中,集群属于提供点,而区域包含提供点(即逻辑概念)zone>pod>cluster>host),新宿主机可随时添加,为客人虚拟机提供更多资源,CloudStack宿主机自动检测cpu数量和内存资源。终端用户看不到宿主机。终端用户无法决定他们的虚拟机分配到哪个宿主机。
CloudStack 有两种存储方式:存储:
Primary storage:一级存储与 cluster 关联,它为此 cluster 所有主机的虚拟机都提供磁盘卷。一个 cluster 至少有一级存储,在部署时应靠近主机,以提供高性能。
Secondary storage:二级存储与 zone 它存储模板文件,ISO 镜像和磁盘卷快照。
二、部署安装cloudstack基本安装环境:
2.1.准备服务器
三台服务器,一个管理端,两个计算节点,组建GFS分布式存储
关闭防火墙selinux
最小化安装
内存要大,IO要快
2.2:系统准备:
2.2.1.配置每个节点hosts解析域名:
[root@mystorage3 ~]# vim /etc/hosts.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain... mystorage3 #管理端... mystorage4 #计算节点及GFS分布式存储节点... mystorage5 #计算节点及GFS分布式存储节点... mystorage6 #备用节点2.2.安装每个节点epel源:
yum -y install epel-release2.2.3:rpm包下载下载路径:
mon-4.8.0-1.el6.x_.rpm -- : M cloudstack-management-4.8.0-1.el6.x_.rpm -- : M #安装和使用管理端 cloudstack-usage-4.8.0-1.el6.x_.rpm -- : M #使用计费监控2.2.4:yum源配置:
[root@mystorage3 yum.repos.d]# vim cloudstack.repo[cloudstack]name=cloudstackbaseurl=http://cloudstack.apt-get.eu/centos/6/4.8/enabled=1gpgcheck=.2.5:下载KVM虚拟机模板:
http://cloudstack.apt-get.eu/systemvm/4.6/
2.2.5.安装时间服务器,避免时间不同步的问题:
# yum -y install ntp# chkconfig ntpd on# service ntpd