{"id":344,"date":"2019-12-23T14:17:20","date_gmt":"2019-12-23T06:17:20","guid":{"rendered":"http:\/\/www.luyouli.com\/?p=344"},"modified":"2019-12-23T14:17:44","modified_gmt":"2019-12-23T06:17:44","slug":"%e5%9c%a8kubernetes%e4%b8%8a%e9%83%a8%e7%bd%b2redis%e9%9b%86%e7%be%a4","status":"publish","type":"post","link":"https:\/\/www.luyouli.com\/?p=344","title":{"rendered":"\u5728kubernetes\u4e0a\u90e8\u7f72redis\u96c6\u7fa4"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u90e8\u7f72\u73af\u5883\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">centos7.7 yum update\u5230\u6700\u65b0\uff0ckubeadm\u4e3a1.16.3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u6b65\u9aa4\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u5b89\u88c5NFS<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># yum install nfs-common  nfs-utils -y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efapv\u76ee\u5f55<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># mkdir -p \/redis\/pv{1..10}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># vim \/etc\/exports<\/p>\n\n\n<p><!--more--><\/p>\n\n\n<p class=\"wp-block-paragraph\">\/redis\/pv1 *(rw,all_squash)<br> \/redis\/pv2 *(rw,all_squash)<br> \/redis\/pv3 *(rw,all_squash)<br> \/redis\/pv4 *(rw,all_squash)<br> \/redis\/pv5 *(rw,all_squash)<br> \/redis\/pv6 *(rw,all_squash)<br> \/redis\/pv7 *(rw,all_squash)<br> \/redis\/pv8 *(rw,all_squash)<br> \/redis\/pv9 *(rw,all_squash)<br> \/redis\/pv10 *(rw,all_squash)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># chmod 777 \/redis\/pv{1..10} <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># systemctl enable nfs &amp;&amp;  systemctl enable rpcbind<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># systemctl start nfs &amp;&amp; systemctl start rpcbind<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># showmount -e     # \u67e5\u770b\u53ef\u6302\u8f7d\uff0c\u5982\u679c\u663e\u793a\u90a3\u4e48\u5c31\u6ca1\u95ee\u9898<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Export list for master:<br> \/redis\/pv10 *<br> \/redis\/pv9 *<br> \/redis\/pv8 *<br> \/redis\/pv7 *<br> \/redis\/pv6 *<br> \/redis\/pv5 *<br> \/redis\/pv4 *<br> \/redis\/pv3 *<br> \/redis\/pv2 *<br> \/redis\/pv1 *<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u521b\u5efaPV<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># vim redis-pv.yaml     # \u5199redis-pv.yaml\u6587\u4ef6\uff0c\u519910\u4e2aPV<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apiVersion: v1\n kind: PersistentVolume\n metadata:\n   name: nfs-pv1\n spec:\n   capacity:\n     storage: 500M\n   accessModes:\n     - ReadWriteMany\n   nfs:\n     server: 127.0.0.1\n     path: \"\/redis\/pv1\"\n---\n\n apiVersion: v1\n kind: PersistentVolume\n metadata:\n   name: nfs-pv2\n spec:\n   capacity:\n     storage: 500M\n   accessModes:\n     - ReadWriteMany\n   nfs:\n     server: 127.0.0.1\n     path: \"\/redis\/pv2\"\n---\n\n......\n\n apiVersion: v1\n kind: PersistentVolume\n metadata:\n   name: nfs-pv9\n spec:\n   capacity:\n     storage: 500M\n   accessModes:\n     - ReadWriteMany\n   nfs:\n     server: 127.0.0.1\n     path: \"\/redis\/pv9\"\n---\n\n apiVersion: v1\n kind: PersistentVolume\n metadata:\n   name: nfs-pv10\n spec:\n   capacity:\n     storage: 500M\n   accessModes:\n     - ReadWriteMany\n   nfs:\n     server: 127.0.0.1\n     path: \"\/redis\/pv10\"\n apiVersion: v1<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"># kubectl create -f redis-pv.yaml # \u521b\u5efaPV<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"525\" height=\"214\" src=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/4-1.jpg\" alt=\"\" class=\"wp-image-366\" srcset=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/4-1.jpg 525w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/4-1-300x122.jpg 300w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u521b\u5efacomfigmap\u6765\u5b58\u653eredis.conf\u914d\u7f6e\u6587\u4ef6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># cat redis.conf<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">appendonly yes                \ncluster-enabled yes              \ncluster-config-file \/var\/lib\/redis\/nodes.conf \ncluster-node-timeout 1000      \ndir \/var\/lib\/redis                  \nport 6379<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"># kubectl create configmap redis-conf &#8211;from-file=redis.conf<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># kubectl get cm<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"374\" height=\"84\" src=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/5.jpg\" alt=\"\" class=\"wp-image-356\" srcset=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/5.jpg 374w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/5-300x67.jpg 300w\" sizes=\"auto, (max-width: 374px) 100vw, 374px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u521b\u5efaheadless service<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#  vim redis-headless-service.yml<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apiVersion: v1\n kind: Service\n metadata:\n   name: redis-service\n   labels:\n     app: redis\n spec:\n   ports:\n   - name: redis-port\n     port: 6379\n   clusterIP: None\n   selector:\n     app: redis\n     appCluster: redis-cluster <\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"># kubectl apply -f redis-headless-service.yml<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># kubectl get svc\nNAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)     AGE\nredis-service   ClusterIP   None                    6379\/TCP    2s<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001\u521b\u5efa\u96c6\u7fa4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># vim redis.yaml<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apiVersion: apps\/v1\n kind: StatefulSet\n metadata:\n   name: redis-app\n spec:\n   serviceName: \"redis-service\"\n   replicas: 10\n   selector:\n     matchLabels:\n       app: redis\n   template:\n     metadata:\n       labels:\n         app: redis\n         appCluster: redis-cluster\n     spec:\n       terminationGracePeriodSeconds: 20\n       affinity:\n         podAntiAffinity:\n           preferredDuringSchedulingIgnoredDuringExecution:\n           - weight: 100\n             podAffinityTerm:\n               labelSelector:\n                 matchExpressions:\n                 - key: app\n                   operator: In\n                   values:\n                   - redis\n               topologyKey: kubernetes.io\/hostname\n       containers:\n       - name: redis\n         image: \"redis:latest\"\n         command: \n           - \"redis-server\"\n         args:\n           - \"\/etc\/redis\/redis.conf\"\n           - \"--protected-mode\"\n           - \"no\"\n         resources:\n           requests:\n             cpu: \"100m\"\n             memory: \"100Mi\"\n         ports:\n             - name: redis\n               containerPort: 6379\n               protocol: \"TCP\"\n             - name: cluster\n               containerPort: 16379\n               protocol: \"TCP\"\n         volumeMounts:\n           - name: \"redis-conf\"\n             mountPath: \"\/etc\/redis\"\n           - name: \"redis-data\"\n             mountPath: \"\/var\/lib\/redis\"\n       volumes:\n       - name: redis-conf\n         configMap:\n           name: redis-conf\n           items:\n             - key: redis.conf\n               path: redis.conf\n   volumeClaimTemplates:  \n   - metadata:\n       name: redis-data \n   spec:\n     accessModes: \n     - ReadWriteMany\n     resources:\n       requests:\n         storage: 200M <\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"># kubectl apply -f redis.yaml<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u53bb\u51b2\u676f\u5496\u5561\uff0c\u591a\u7b49\u4e00\u4f1a\u513f\uff0c\u7136\u540e\u6765\u4e00\u6ce2\u4e09\u8fde<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"641\" src=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/6-1024x641.jpg\" alt=\"\" class=\"wp-image-370\" srcset=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/6-1024x641.jpg 1024w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/6-300x188.jpg 300w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/6-768x481.jpg 768w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/6.jpg 1196w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">6\u3001\u521b\u5efacentos\u4e3a\u521d\u59cb\u5316redis\u96c6\u7fa4\u505a\u51c6\u5907<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># kubectl run -i &#8211;tty redistrib &#8211;image=centos:7  \/bin\/bash<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># wget -O \/etc\/yum.repos.d\/epel.repo http:\/\/mirrors.aliyun.com\/repo\/epel-7.repo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># yum install redis-trib bind-utils -y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">7\u3001\u521d\u59cb\u5316\u96c6\u7fa4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u4e00\u4e3b\u4e00\u4ece\u96c6\u7fa4\u8282\u70b9<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@ redistrib-56dcc745c6-rz85n \/]# redis-trib create --replicas 1 \\\n   <code>dig +short redis-app-0.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-1.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-2.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-3.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-4.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-5.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-6.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-7.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-8.redis-service.default.svc.cluster.local<\/code>:6379 \\\n   <code>dig +short redis-app-9.redis-service.default.svc.cluster.local<\/code>:6379 <\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"595\" height=\"657\" src=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/7.jpg\" alt=\"\" class=\"wp-image-375\" srcset=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/7.jpg 595w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/7-272x300.jpg 272w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8f93\u5165YES\u5f00\u59cb\u521b\u5efa\u96c6\u7fa4<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"744\" src=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/8.jpg\" alt=\"\" class=\"wp-image-378\" srcset=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/8.jpg 625w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/8-252x300.jpg 252w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u540e\u4e00\u53e5\uff1a[OK] All 16384 slots covered.   \u8868\u793a\u96c6\u7fa4\u641e\u7684\u6ca1\u5565\u95ee\u9898<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fde\u63a5\u968f\u610f\u4e00\u4e2a\u8282\u70b9\u9a8c\u8bc1\u96c6\u7fa4<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"514\" src=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/9-1024x514.jpg\" alt=\"\" class=\"wp-image-380\" srcset=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/9-1024x514.jpg 1024w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/9-300x151.jpg 300w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/9-768x386.jpg 768w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/9.jpg 1338w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">8\u3001\u521b\u5efaredis-svc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"># cat redis-svc.yaml<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apiVersion: v1\n kind: Service\n metadata:\n   name: redis-server\n   labels:\n     app: redis\n spec:\n   ports:\n     - port: 6379\n       protocol: TCP\n       targetPort: 6379\n   selector:\n     app: redis\n     appCluster: redis-cluster<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"># kubectl apply -f redis-svc.yaml<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"691\" height=\"180\" src=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/10.png\" alt=\"\" class=\"wp-image-383\" srcset=\"https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/10.png 691w, https:\/\/www.luyouli.com\/wp-content\/uploads\/2019\/12\/10-300x78.png 300w\" sizes=\"auto, (max-width: 691px) 100vw, 691px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u96c6\u7fa4\u90e8\u7f72\u5b8c\u6210<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u90e8\u7f72\u73af\u5883\uff1a centos7.7 yum update\u5230\u6700\u65b0\uff0ckubeadm\u4e3a1.16.3 \u5b89\u88c5\u6b65\u9aa4\uff1a 1\u3001\u5b89\u88c5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-344","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"views":6788,"_links":{"self":[{"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/posts\/344","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=344"}],"version-history":[{"count":35,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/posts\/344\/revisions"}],"predecessor-version":[{"id":388,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=\/wp\/v2\/posts\/344\/revisions\/388"}],"wp:attachment":[{"href":"https:\/\/www.luyouli.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.luyouli.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}