如何进行K8S存储系统 K8s怎么对象分布式存储?

\u5982\u4f55\u8fdb\u884cK8S\u5b58\u50a8\u7cfb\u7edf

1.\u666e\u901aVolume

\u6700\u7b80\u5355\u7684\u666e\u901aVolume\u662f\u5355\u8282\u70b9Volume\u3002\u5b83\u548cDocker\u7684\u5b58\u50a8\u5377\u7c7b\u4f3c\uff0c\u4f7f\u7528\u7684\u662fPod\u6240\u5728K8S\u8282\u70b9\u7684\u672c\u5730\u76ee\u5f55\u3002

\u7b2c\u4e8c\u79cd\u7c7b\u578b\u662f\u8de8\u8282\u70b9\u5b58\u50a8\u5377\uff0c\u8fd9\u79cd\u5b58\u50a8\u5377\u4e0d\u548c\u67d0\u4e2a\u5177\u4f53\u7684K8S\u8282\u70b9\u7ed1\u5b9a\uff0c\u800c\u662f\u72ec\u7acb\u4e8eK8S\u8282\u70b9\u5b58\u5728\u7684\uff0c\u6574\u4e2a\u5b58\u50a8\u96c6\u7fa4\u548cK8S\u96c6\u7fa4\u662f\u4e24\u4e2a\u96c6\u7fa4\uff0c\u76f8\u4e92\u72ec\u7acb\u3002

\u8de8\u8282\u70b9\u7684\u5b58\u50a8\u5377\u5728Kubernetes\u4e0a\u7528\u7684\u6bd4\u8f83\u591a\uff0c\u5982\u679c\u5df2\u6709\u7684\u5b58\u50a8\u4e0d\u80fd\u6ee1\u8db3\u8981\u6c42\uff0c\u8fd8\u53ef\u4ee5\u5f00\u53d1\u81ea\u5df1\u7684Volume\u63d2\u4ef6\uff0c\u53ea\u9700\u8981\u5b9e\u73b0Volume.go\u91cc\u5b9a\u4e49\u7684\u63a5\u53e3\u3002\u5982\u679c\u4f60\u662f\u4e00\u4e2a\u5b58\u50a8\u5382\u5546\uff0c\u60f3\u8981\u81ea\u5df1\u7684\u5b58\u50a8\u652f\u6301Kubernetes\u4e0a\u8fd0\u884c\u7684\u5bb9\u5668\uff0c\u5c31\u53ef\u4ee5\u53bb\u5f00\u53d1\u4e00\u4e2a\u81ea\u5df1\u7684Volume\u63d2\u4ef6\u3002

K8s\u5bf9\u8c61\u5206\u5e03\u5f0f\u5b58\u50a8\u7684\u65b9\u5f0f\u5f88\u591a\uff0c\u6211\u4eec\u7528\u7684\u5143\u6838\u4e91\u5206\u5e03\u5f0f\u5757\u5b58\u50a8\uff0c\u7528\u7684\u5c31\u662fceph-csi\u5bf9\u63a5\u7684\u4ed6\u4eec\u7684rbd\u5757\u5b58\u50a8\u3002

在K8S运行的服务,从简单到复杂可以分成三类:无状态服务、普通有状态服务和有状态集群服务。下面分别来看K8S是如何运行这三类服务的。

无状态服务,K8S使用RC(或更新的Replica Set)来保证一个服务的实例数量,如果说某个Pod实例由于某种原因Crash了,RC会立刻用这个Pod的模版新启一个Pod来替代它,由于是无状态的服务,新启的Pod与原来健康状态下的Pod一模一样。在Pod被重建后它的IP地址可能发生变化,为了对外提供一个稳定的访问接口,K8S引入了Service的概念。一个Service后面可以挂多个Pod,实现服务的高可用。

普通有状态服务,和无状态服务相比,它多了状态保存的需求。Kubernetes提供了以Volume和Persistent Volume为基础的存储系统,可以实现服务的状态保存。

有状态集群服务,与普通有状态服务相比,它多了集群管理的需求。K8S为此开发了一套以Pet Set为核心的全新特性,方便了有状态集群服务在K8S上的部署和管理。具体来说是通过Init Container来做集群的初始化工作,用Headless Service来维持集群成员的稳定关系,用动态存储供给来方便集群扩容,最后用Pet Set来综合管理整个集群。

要运行有状态集群服务要解决的问题有两个,一个是状态保存,另一个是集群管理。我们先来看如何解决第一个问题:状态保存。Kubernetes有一套以Volume插件为基础的存储系统,通过这套存储系统可以实现应用和服务的状态保存。

K8S的存储系统从基础到高级又大致分为三个层次:普通Volume,Persistent Volume和动态存储供应。

1.普通Volume

最简单的普通Volume是单节点Volume。它和Docker的存储卷类似,使用的是Pod所在K8S节点的本地目录。

第二种类型是跨节点存储卷,这种存储卷不和某个具体的K8S节点绑定,而是独立于K8S节点存在的,整个存储集群和K8S集群是两个集群,相互独立。

跨节点的存储卷在Kubernetes上用的比较多,如果已有的存储不能满足要求,还可以开发自己的Volume插件,只需要实现Volume.go里定义的接口。如果你是一个存储厂商,想要自己的存储支持Kubernetes上运行的容器,就可以去开发一个自己的Volume插件。

2.persistent volume

它和普通Volume的区别是什么呢?

普通Volume和使用它的Pod之间是一种静态绑定关系,在定义Pod的文件里,同时定义了它使用的Volume。Volume是Pod的附属品,我们无法单独创建一个Volume,因为它不是一个独立的K8S资源对象。

而Persistent Volume简称PV是一个K8S资源对象,所以我们可以单独创建一个PV。它不和Pod直接发生关系,而是通过Persistent Volume Claim,简称PVC来实现动态绑定。Pod定义里指定的是PVC,然后PVC会根据Pod的要求去自动绑定合适的PV给Pod使用。

1.普通Volume

最简单的普通Volume是单节点Volume。它和Docker的存储卷类似,使用的是Pod所在K8S节点的本地目录。

第二种类型是跨节点存储卷,这种存储卷不和某个具体的K8S节点绑定,而是独立于K8S节点存在的,整个存储集群和K8S集群是两个集群,相互独立。

跨节点的存储卷在Kubernetes上用的比较多,如果已有的存储不能满足要求,还可以开发自己的Volume插件,只需要实现Volume.go里定义的接口。如果你是一个存储厂商,想要自己的存储支持Kubernetes上运行的容器,就可以去开发一个自己的Volume插件。

2.persistent volume

它和普通Volume的区别是什么呢?

普通Volume和使用它的Pod之间是一种静态绑定关系,在定义Pod的文件里,同时定义了它使用的Volume。Volume是Pod的附属品,我们无法单独创建一个Volume,因为它不是一个独立的K8S资源对象。

而Persistent Volume简称PV是一个K8S资源对象,所以我们可以单独创建一个PV。它不和Pod直接发生关系,而是通过Persistent Volume Claim,简称PVC来实现动态绑定。Pod定义里指定的是PVC,然后PVC会根据Pod的要求去自动绑定合适的PV给Pod使用。

PV的访问模式有三种:

第一种,ReadWriteOnce:是最基本的方式,可读可写,但只支持被单个Pod挂载。
第二种,ReadOnlyMany:可以以只读的方式被多个Pod挂载。
第三种,ReadWriteMany:这种存储可以以读写的方式被多个Pod共享。不是每一种存储都支持这三种方式,像共享方式,目前支持的还比较少,比较常用的是NFS。在PVC绑定PV时通常根据两个条件来绑定,一个是存储的大小,另一个就是访问模式。

刚才提到说PV与普通Volume的区别是动态绑定,我们来看一下这个过程是怎样的。

  • K8s 鏁版嵁瀛樺偍涔婸ersistentVolume
    绛旓細杩欎袱涓蹇电敤浜巔od鍜寁olume涔嬮棿瑙h︺侾od鏍规嵁鑷繁鐨勯渶瑕佹彁鍑烘暟鎹嵎鐨勭敵璇凤紝k8s绯荤粺灏嗙鍚堟潯浠剁殑鏁版嵁鍗疯繑鍥炵粰pod銆傝繖鏍蜂竴鏉od灏辨棤闇鐩存帴鍜屾暟鎹嵎鏈韩寮虹粦瀹氫簡銆侾od鏃犻渶鐭ラ亾鏁版嵁鍗风殑缁嗚妭淇℃伅锛屾瘮濡傚叿浣撶敤鐨勬槸浠涔瀛樺偍銆侾od涓鏁版嵁鍗风殑鐢宠涓篜VC锛岀敤鏉ュ拰PVC缁戝畾鐨勬暟鎹嵎绉颁负PV銆侾V鍙互鏈夊绉嶅瓨鍌ㄦ柟寮忥紝姣斿...
  • 鍩轰簬Linux鑷繁鍒濇鎼缓Kubernetes(k8s)闆嗙兢鍩虹,璇︾粏鏁欑▼
    绛旓細瀹夎杞欢鍖呬互鍏佽apt閫氳繃HTTPS浣跨敤瀛樺偍搴擄紝宸插畨瑁呰蒋浠剁殑鍙互蹇界暐 3锛屼笅杞藉叕寮绛惧悕绉橀挜銆佸苟娣诲姞k8s搴 鍥藉 锛氫笅杞 Google Cloud 鍏紑绛惧悕绉橀挜锛氬浗鍐咃細鍙互鐢ㄩ樋閲屾簮鍗冲彲锛氳娉ㄦ剰锛屽湪鍛戒护涓紝浣跨敤鐨勬槸Ubuntu 16.04 Xenial 鐗堟湰锛 鏄彲鐢ㄧ殑鏈鏂 Kubernetes 瀛樺偍搴撱傛墍浠ヨ岄潪20.04 鐨刦ocal銆4锛屾洿鏂 apt 鍖...
  • k8s etcd 涓庢寔涔呭寲瀛樺偍
    绛旓細(2)宸ヤ綔鍘熺悊 Etcd浣跨敤 Raft鍗忚 鏉ョ淮鎶ら泦缇ゅ唴鍚勪釜鑺傜偣鐘舵佺殑 涓鑷存 銆傜畝鍗曡锛孍TCD闆嗙兢鏄竴涓垎甯冨紡绯荤粺锛岀敱澶氫釜鑺傜偣鐩镐簰閫氫俊鏋勬垚鏁翠綋瀵瑰鏈嶅姟锛 姣忎釜鑺傜偣閮瀛樺偍浜嗗畬鏁寸殑鏁版嵁 锛屽苟涓旈氳繃Raft鍗忚淇濊瘉姣忎釜鑺傜偣缁存姢鐨勬暟鎹槸涓鑷寸殑 (3) 涓昏缁勬垚閮ㄥ垎 (4)etcd闆嗙兢涓殑鏈 3銆k8s涓殑etcd (1)etcd鍦╧8s涓...
  • k8s涓殑Mysql鏁版嵁搴撴寔涔呭寲瀛樺偍
    绛旓細K8s闆嗙兢鐗堟湰涓1.15.0鐗堟湰:鍥涖佸熀浜嶴tatefulSet涓嶱V/PVC鐨凪ySql鎸佷箙鍖瀛樺偍瀹為獙1. 鍦ㄦ瘡涓妭鐐瑰畨瑁卬fs鏈嶅姟鍦ㄢ滈暅鍍忎粨搴撯濊妭鐐,鎵ц浠ヤ笅鍛戒护: yum install -y nfs-common nfs-utils rpcbind 鍦k8s闆嗙兢,鎵ц浠ヤ笅鍛戒护: yum install -y nfs-utils rpcbind2. 鍦ㄢ滈暅鍍忎粨搴撯濊妭鐐逛笅,閰嶇疆nfs鏈嶅姟鍣 mkdir /nfs_mysql Chmod...
  • 閫氳繃K8S閮ㄧ讲瀵硅薄瀛樺偍MinIO
    绛旓細MinIO鏀寔澶氱鐏垫椿鐨勯儴缃叉柟寮忥紝鏀寔Docker Compose銆丏ocker Swam銆並ubernetes绛夛紝璇﹁瀹樼綉锛 https://docs.min.io/docs/minio-deployment-quickstart-guide.html 鎴栬 https://min.io/download#/linux 杩欓噷鐫閲嶄粙缁K8S涓嬮儴缃 1銆乻tandalone妯″紡 鐢变簬service閲囩敤NodePort绫诲瀷锛岄氳繃涓绘満IP:32593璁块棶web 2銆...
  • kubernetes(k8s)PVC鐨勪娇鐢
    绛旓細鍙戠幇骞舵病鏈変换浣曟暟鎹紝杩欐槸鍥犱负鎴戜滑鎶婂鍣ㄧ洰褰/user/share/nginx/html鍜屾寕杞藉埌浜唒vc-nfs杩欎釜 PVC 涓婇潰锛岃繖涓 PVC 灏辨槸瀵瑰簲鐫鎴戜滑涓婇潰鐨 nfs 鐨勫叡浜暟鎹洰褰曠殑锛岃鐩綍涓嬮潰杩樻病鏈変换浣曟暟鎹紝鎵浠ユ垜浠闂氨鍑虹幇浜403锛岀幇鍦ㄦ垜浠湪/data/k8s杩欎釜鐩綍涓嬮潰鏂板缓涓涓 index.html 鐨勬枃浠讹細鍙互鐪嬪埌鍏变韩鏁版嵁鐩綍涓...
  • Docker鏍稿績鎶鏈,鍒╃敤K8S鏋勫缓銆佹墦鍖呭拰閮ㄧ讲Docker瀹瑰櫒
    绛旓細鍦ㄨ繖涓閮ㄥ垎锛屾垜浠皢鎺㈢┒瀹瑰櫒鐨勭紪鎺掋傜15绔犲皢鎻忚堪濡備綍鍦ㄤ竴涓绯荤粺涓娇鐢↘ubernates鐨刴aster鍜宯ode鏈嶅姟锛屼互渚胯兘澶熷皾璇昁ubernetes銆傜16绔犳垜浠皢瓒呰秺涓浣撳寲Kubernetes绯荤粺锛屾弿杩板浣曟惌寤篕ubernetes闆嗙兢銆傚湪Kubernetes闆嗙兢灏变綅鍚庯紝鍙互閫氳繃master璁$畻鏈哄皢瀹瑰櫒pod涓殑搴旂敤閮ㄧ讲鍒颁笉鍚岀殑node璁$畻鏈轰笂杩涜绠$悊銆傜浜旈儴鍒嗗紑鍙...
  • k8s鏄粈涔堟剰鎬濆晩
    绛旓細k8s鏄粈涔堟剰鎬濆晩锛K8s鍏ㄧО涓篕ubernetes锛屾槸鐢盙oogle璁捐鐨勪竴绉嶅紑婧愬鍣ㄧ紪鎺掑钩鍙帮紝鐢ㄤ簬绠$悊澶氫釜瀹瑰櫒鐨勮嚜鍔ㄥ寲閮ㄧ讲銆佹墿灞曞拰杩愮淮銆侹8s閲囩敤浜嗕竴绉嶇被浼间簬Google鍐呴儴鐨凚org绯荤粺鐨勬灦鏋勶紝鍙互杞绘澗鍦伴儴缃层佺鐞嗗拰鎵╁睍瀹瑰櫒鍖栧簲鐢ㄧ▼搴忋侹8s鏄粈涔堟剰鎬濆晩锛烱ubernetes鑳藉璁╃敤鎴峰湪鐗╃悊銆佽櫄鎷熷拰浜戠幆澧冧腑绠$悊瀹瑰櫒搴旂敤锛岃屼笉蹇呮媴蹇...
  • K8S-volume瀛樺偍涔媍onfigmap
    绛旓細ConfigMap椤惧悕鎬濅箟锛屾槸鐢ㄤ簬淇濆瓨閰嶇疆鏁版嵁鐨勯敭鍊煎锛屽彲浠ョ敤鏉ヤ繚瀛樺崟涓睘鎬э紝涔熷彲浠ヤ繚瀛橀厤缃枃浠躲 ConfigMaps鍏佽浣犲皢閰嶇疆鏋勪欢涓庢槧鍍忓唴瀹硅В鑰︼紝浠ヤ繚鎸佸鍣ㄥ寲搴旂敤绋嬪簭鐨勫彲绉绘鎬с俢onfigmap 鍙互浠庢枃浠躲佺洰褰曟垨鑰 key-value 瀛楃涓插垱寤虹瓑鍒涘缓 ConfigMap銆備篃鍙互閫氳繃 kubectl create -f浠庢弿杩版枃浠跺垱寤恒傚彲浠ヤ娇鐢 ...
  • 瀛︿範K8s瑕佸涔犲摢浜涚煡璇嗙偣?
    绛旓細璧勬簮绠$悊鏄疜ubernetes鐨勫張涓寮洪」锛岄氳繃CPU鍜屽唴瀛樼殑绮剧‘鎺у埗锛屽畠鑳芥櫤鑳藉湴浼樺寲璧勬簮鍒嗛厤銆傝岃嚜鎴戜慨澶嶆満鍒跺垯纭繚浜绯荤粺鐨勭ǔ瀹氭э紝閫氳繃鐩戞帶鍜岃嚜鍔ㄦ仮澶嶏紝瀹冭兘蹇熷鐞嗗鍣ㄦ晠闅滐紝纭繚鏈嶅姟鐨勪笉闂存柇杩愯銆傛澶栵紝Kubernetes 杩樻彁渚涗簡瀹夊叏鐨勫瘑閽ュ拰閰嶇疆绠$悊锛屽厑璁搁珮鏁堝湴瀛樺偍鍜屾洿鏂版晱鎰熶俊鎭紝鏃犻渶棰戠箒鏇存柊闀滃儚銆侹ubernetes 鐨...
  • 扩展阅读:k8s证书认证考试 ... k8s运维面试题与答案 ... k8s手机经典网 ... k8s理论 ... k82手机经典版官网 ... 老版k8手机经典入口 ... k82经典电网 ... k8s进入pod命令 ... k8s面试题及答案 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网