{"id":67763,"date":"2025-05-10T09:57:32","date_gmt":"2025-05-10T01:57:32","guid":{"rendered":"https:\/\/fwq.ai\/blog\/67763\/"},"modified":"2025-05-10T09:57:32","modified_gmt":"2025-05-10T01:57:32","slug":"%e6%95%99%e4%bd%a0%e5%9c%a8kubernetes%e4%b8%8a%e9%83%a8%e7%bd%b2redis%e9%ab%98%e5%8f%af%e7%94%a8%e9%9b%86%e7%be%a4-2","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/67763\/","title":{"rendered":"\u6559\u4f60\u5728Kubernetes\u4e0a\u90e8\u7f72Redis\u9ad8\u53ef\u7528\u96c6\u7fa4"},"content":{"rendered":"<p><b><\/b> <\/p>\n<h1>\u6559\u4f60\u5728Kubernetes\u4e0a\u90e8\u7f72Redis\u9ad8\u53ef\u7528\u96c6\u7fa4<\/h1>\n<p><span style=\"cursor: pointer\"><i><\/i>\u6536\u85cf<\/span> <\/p>\n<p>\u5bf9\u4e8e\u4e00\u4e2a\u6570\u636e\u5e93\u5f00\u53d1\u8005\u6765\u8bf4\uff0c\u7262\u56fa\u624e\u5b9e\u7684\u57fa\u7840\u662f\u5341\u5206\u91cd\u8981\u7684\uff0cgolang\u5b66\u4e60\u7f51\u5c31\u6765\u5e26\u5927\u5bb6\u4e00\u70b9\u70b9\u7684\u638c\u63e1\u57fa\u7840\u77e5\u8bc6\u70b9\u3002\u4eca\u5929\u672c\u7bc7\u6587\u7ae0\u5e26\u5927\u5bb6\u4e86\u89e3\u300a\u6559\u4f60\u5728Kubernetes\u4e0a\u90e8\u7f72Redis\u9ad8\u53ef\u7528\u96c6\u7fa4\u300b\uff0c\u4e3b\u8981\u4ecb\u7ecd\u4e86Redis\u3001\u6570\u636e\u5e93\u3001kubernetes\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u7684\u77e5\u8bc6\u79ef\u7d2f\u6709\u6240\u5e2e\u52a9\uff0c\u5feb\u70b9\u6536\u85cf\u8d77\u6765\u5427\uff0c\u5426\u5219\u9700\u8981\u65f6\u5c31\u627e\u4e0d\u5230\u4e86\uff01<\/p>\n<\/p>\n<p><strong>&nbsp;Redis \u4ecb\u7ecd<\/strong><\/p>\n<p>Redis \u4ee3\u8868REmote DIctionary Server\u662f\u4e00\u79cd\u5f00\u6e90\u7684\u5185\u5b58\u4e2d\u6570\u636e\u5b58\u50a8\uff0c\u901a\u5e38\u7528\u4f5c\u6570\u636e\u5e93\uff0c\u7f13\u5b58\u6216\u6d88\u606f\u4ee3\u7406\u3002\u5b83\u53ef\u4ee5\u5b58\u50a8\u548c\u64cd\u4f5c\u9ad8\u7ea7\u6570\u636e\u7c7b\u578b\uff0c\u4f8b\u5982\u5217\u8868\uff0c\u5730\u56fe\uff0c\u96c6\u5408\u548c\u6392\u5e8f\u96c6\u5408\u3002\u7531\u4e8eRedis\u63a5\u53d7\u591a\u79cd\u683c\u5f0f\u7684\u5bc6\u94a5\uff0c\u56e0\u6b64\u53ef\u4ee5\u5728\u670d\u52a1\u5668\u4e0a\u6267\u884c\u64cd\u4f5c\uff0c\u4ece\u800c\u51cf\u5c11\u4e86\u5ba2\u6237\u7aef\u7684\u5de5\u4f5c\u91cf\u3002\u5b83\u4ec5\u5c06\u78c1\u76d8\u7528\u4e8e\u6301\u4e45\u6027\uff0c\u800c\u5c06\u6570\u636e\u5e93\u5b8c\u5168\u4fdd\u5b58\u5728\u5185\u5b58\u4e2d\u3002Redis\u662f\u4e00\u79cd\u6d41\u884c\u7684\u6570\u636e\u5b58\u50a8\u89e3\u51b3\u65b9\u6848\uff0c\u5e76\u88abGitHub\uff0cPinterest\uff0cSnapchat\uff0cTwitter\uff0cStackOverflow\uff0cFlickr\u7b49\u6280\u672f\u5de8\u5934\u6240\u4f7f\u7528\u3002<\/p>\n<p><strong>\u4e3a\u4ec0\u4e48\u4f7f\u7528 Redis<\/strong><\/p>\n<ul>\n<li>&nbsp;\u5b83\u7684\u901f\u5ea6\u975e\u5e38\u5feb\u3002\u5b83\u662f\u7528 ANSI C \u7f16\u5199\u7684\uff0c\u5e76\u4e14\u53ef\u4ee5\u5728 POSIX \u7cfb\u7edf\u4e0a\u8fd0\u884c\uff0c\u4f8b\u5982 Linux\uff0cMac OS X \u548c Solaris\u3002<\/li>\n<li>&nbsp;Redis \u901a\u5e38\u88ab\u6392\u540d\u4e3a\u6700\u6d41\u884c\u7684\u952e\/\u503c\u6570\u636e\u5e93\u548c\u6700\u6d41\u884c\u7684\u4e0e\u5bb9\u5668\u4e00\u8d77\u4f7f\u7528\u7684 NoSQL \u6570\u636e\u5e93\u3002<\/li>\n<li>&nbsp;\u5176\u7f13\u5b58\u89e3\u51b3\u65b9\u6848\u51cf\u5c11\u4e86\u5bf9\u4e91\u6570\u636e\u5e93\u540e\u7aef\u7684\u8c03\u7528\u6b21\u6570\u3002<\/li>\n<li>&nbsp;\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u5176\u5ba2\u6237\u7aef API \u5e93\u5bf9\u5176\u8fdb\u884c\u8bbf\u95ee\u3002<\/li>\n<li>&nbsp;\u6240\u6709\u6d41\u884c\u7684\u7f16\u7a0b\u8bed\u8a00\u90fd\u652f\u6301 Redis\u3002<\/li>\n<li>&nbsp;\u5b83\u662f\u5f00\u6e90\u4e14\u7a33\u5b9a\u7684\u3002<\/li>\n<\/ul>\n<p><strong>\u4ec0\u4e48\u662f Redis \u96c6\u7fa4<\/strong><\/p>\n<p>Redis Cluster \u662f\u4e00\u7ec4 Redis \u5b9e\u4f8b\uff0c\u65e8\u5728\u901a\u8fc7\u5bf9\u6570\u636e\u5e93\u8fdb\u884c\u5206\u533a\u6765\u6269\u5c55\u6570\u636e\u5e93\uff0c\u4ece\u800c\u4f7f\u5176\u66f4\u5177\u5f39\u6027\u3002\u7fa4\u96c6\u4e2d\u7684\u6bcf\u4e2a\u6210\u5458\uff08\u65e0\u8bba\u662f\u4e3b\u526f\u672c\u8fd8\u662f\u8f85\u52a9\u526f\u672c\uff09\u90fd\u7ba1\u7406\u54c8\u5e0c\u69fd\u7684\u5b50\u96c6\u3002\u5982\u679c\u4e3b\u673a\u65e0\u6cd5\u8bbf\u95ee\uff0c\u5219\u5176\u4ece\u673a\u5c06\u5347\u7ea7\u4e3a\u4e3b\u673a\u3002\u5728\u7531\u4e09\u4e2a\u4e3b\u8282\u70b9\u7ec4\u6210\u7684\u6700\u5c0f Redis \u7fa4\u96c6\u4e2d\uff0c\u6bcf\u4e2a\u4e3b\u8282\u70b9\u90fd\u6709\u4e00\u4e2a\u4ece\u8282\u70b9\uff08\u4ee5\u5b9e\u73b0\u6700\u5c0f\u7684\u6545\u969c\u8f6c\u79fb\uff09\uff0c\u6bcf\u4e2a\u4e3b\u8282\u70b9\u90fd\u5206\u914d\u6709\u4e00\u4e2a\u4ecb\u4e8e 0 \u5230 16,383 \u4e4b\u95f4\u7684\u54c8\u5e0c\u69fd\u8303\u56f4\u3002\u8282\u70b9 A \u5305\u542b\u4ece 0 \u5230 5000 \u7684\u54c8\u5e0c\u69fd\uff0c\u8282\u70b9 B \u4ece 5001 \u5230 10000\uff0c\u8282\u70b9 C \u4ece 10001 \u5230 16383\u3002\u7fa4\u96c6\u5185\u90e8\u7684\u901a\u4fe1\u662f\u901a\u8fc7\u5185\u90e8\u603b\u7ebf\u8fdb\u884c\u7684\uff0c\u4f7f\u7528\u534f\u8bae\u4f20\u64ad\u6709\u5173\u7fa4\u96c6\u7684\u4fe1\u606f\u6216\u53d1\u73b0\u65b0\u8282\u70b9\u3002<\/p>\n<p><strong>\u5728 Kubernetes \u4e2d\u90e8\u7f72 Redis \u96c6\u7fa4<\/strong><\/p>\n<p>\u5728Kubernetes\u4e2d\u90e8\u7f72Redis\u96c6\u7fa4\u9762\u4e34\u6311\u6218\uff0c\u56e0\u4e3a\u6bcf\u4e2a Redis \u5b9e\u4f8b\u90fd\u4f9d\u8d56\u4e8e\u4e00\u4e2a\u914d\u7f6e\u6587\u4ef6\uff0c\u8be5\u6587\u4ef6\u53ef\u4ee5\u8ddf\u8e2a\u5176\u4ed6\u96c6\u7fa4\u5b9e\u4f8b\u53ca\u5176\u89d2\u8272\u3002\u4e3a\u6b64\uff0c\u6211\u4eec\u9700\u8981\u7ed3\u5408\u4f7f\u7528Kubernetes StatefulSets\u548cPersistentVolumes\u3002<\/p>\n<p><strong>\u514b\u9686\u90e8\u7f72\u6587\u4ef6<\/strong><\/p>\n<\/p>\n<ol>\n<li><span><span>git&nbsp;clone&nbsp;https:\/\/github.com\/llmgo\/redis-sts.git&nbsp;&nbsp;&nbsp;<\/span><\/span><\/li>\n<\/ol>\n<p>\u521b\u5efa statefulset \u7c7b\u578b\u8d44\u6e90&nbsp;<\/p>\n<\/p>\n<ol>\n<li><span><span>[root@node01&nbsp;redis-sts]#&nbsp;cat&nbsp;redis-sts.yml&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>&#8212;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>apiVersion:&nbsp;v1&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>kind:&nbsp;ConfigMap&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>metadata:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;name:&nbsp;redis-cluster&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>data:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;update-node.sh:&nbsp;|&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;#!\/bin\/sh&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span>REDIS_NODES<\/span><span>=<\/span><span>&#8220;\/data\/nodes.conf&#8221;<\/span><span>&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;sed&nbsp;-i&nbsp;-e&nbsp;&#8220;\/myself\/&nbsp;s\/[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\/${POD_IP}\/&#8221;&nbsp;${REDIS_NODES}&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;exec&nbsp;&#8220;$@&#8221;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;redis.conf:&nbsp;|+&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;cluster-enabled&nbsp;yes&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;cluster-require-full-coverage&nbsp;no&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;cluster-node-timeout&nbsp;15000&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;cluster-config-file&nbsp;\/data\/nodes.conf&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;cluster-migration-barrier&nbsp;1&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;appendonly&nbsp;yes&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;protected-mode&nbsp;no&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&#8212;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>apiVersion:&nbsp;apps\/v1&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>kind:&nbsp;StatefulSet&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>metadata:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;name:&nbsp;redis-cluster&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>spec:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;serviceName:&nbsp;redis-cluster&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;replicas:&nbsp;6&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;selector:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;matchLabels:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;redis-cluster&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;template:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;metadata:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labels:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;redis-cluster&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;spec:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;containers:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211;&nbsp;name:&nbsp;redis&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;redis:5.0.5-alpine&nbsp;<\/span><\/li>\n<li><span>&nbsp;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ports:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211;&nbsp;containerPort:&nbsp;6379&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;client&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211;&nbsp;containerPort:&nbsp;16379&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;gossip&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command:&nbsp;[&#8220;\/conf\/update-node.sh&#8221;,&nbsp;&#8220;redis-server&#8221;,&nbsp;&#8220;\/conf\/redis.conf&#8221;]&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211;&nbsp;name:&nbsp;POD_IP&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueFrom:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldRef:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldPath:&nbsp;status.podIP&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volumeMounts:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211;&nbsp;name:&nbsp;conf&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mountPath:&nbsp;\/conf&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readOnly:&nbsp;false&nbsp;<\/span>&nbsp;<\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211;&nbsp;name:&nbsp;data&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mountPath:&nbsp;\/data&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readOnly:&nbsp;false&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volumes:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8211;&nbsp;name:&nbsp;conf&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configMap:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;redis-cluster&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultMode:&nbsp;0755&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;volumeClaimTemplates:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&#8211;&nbsp;metadata:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;data&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;spec:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accessModes:&nbsp;[&nbsp;&#8220;ReadWriteOnce&#8221;&nbsp;]&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resources:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requests:&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storage:&nbsp;5Gi&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storageClassName:&nbsp;standard&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;kubectl&nbsp;apply&nbsp;-f&nbsp;redis-sts.yml&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>configmap\/redis-cluster&nbsp;created&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>statefulset.apps\/redis-cluster&nbsp;created&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;kubectl&nbsp;get&nbsp;pods&nbsp;-l&nbsp;<span>app<\/span><span>=<\/span><span>redis<\/span><span>-cluster&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READY&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;RESTARTS&nbsp;&nbsp;&nbsp;AGE&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-0&nbsp;&nbsp;&nbsp;1\/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;53s&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-1&nbsp;&nbsp;&nbsp;1\/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;49s&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-2&nbsp;&nbsp;&nbsp;1\/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;46s&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-3&nbsp;&nbsp;&nbsp;1\/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;42s&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-4&nbsp;&nbsp;&nbsp;1\/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;38s&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-5&nbsp;&nbsp;&nbsp;1\/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;34s&nbsp;<\/span><\/li>\n<\/ol>\n<p><strong>\u521b\u5efa service<\/strong>&nbsp;<\/p>\n<\/p>\n<ol>\n<li><span><span>[root@node01&nbsp;redis-sts]#&nbsp;cat&nbsp;redis-svc.yml&nbsp;&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>&#8212;&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>apiVersion:&nbsp;v1&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>kind:&nbsp;Service&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>metadata:&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;name:&nbsp;redis-cluster&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>spec:&nbsp;&nbsp;&nbsp;<\/span><\/li>\n<li><span>&nbsp;<\/span><span>&nbsp;&nbsp;type:&nbsp;ClusterIP&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;clusterIP:&nbsp;10.96.0.100&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;ports:&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&#8211;&nbsp;port:&nbsp;6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;targetPort:&nbsp;6379&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;client&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&#8211;&nbsp;port:&nbsp;16379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;targetPort:&nbsp;16379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;gossip&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;selector:&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;redis-cluster&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;kubectl&nbsp;apply&nbsp;-f&nbsp;redis-svc.yml&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>service\/redis-cluster&nbsp;created&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;kubectl&nbsp;get&nbsp;svc&nbsp;redis-cluster&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLUSTER-IP&nbsp;&nbsp;&nbsp;EXTERNAL-IP&nbsp;&nbsp;&nbsp;PORT(S)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGE&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster&nbsp;&nbsp;&nbsp;ClusterIP&nbsp;&nbsp;&nbsp;10.96.0.100&nbsp;&nbsp;&nbsp;<span><span>none<\/span><span>&gt;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6379\/TCP,16379\/TCP&nbsp;&nbsp;&nbsp;35s&nbsp;&nbsp;&nbsp;<\/span><\/span><\/span><\/li>\n<\/ol>\n<p><strong>\u521d\u59cb\u5316 redis cluster<\/strong><\/p>\n<p>&nbsp; &nbsp; \u201c&nbsp; &nbsp; \u4e0b\u4e00\u6b65\u662f\u5f62\u6210Redis\u96c6\u7fa4\u3002\u4e3a\u6b64\uff0c\u6211\u4eec\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u5e76\u952e\u5165yes\u4ee5\u63a5\u53d7\u914d\u7f6e\u3002\u524d\u4e09\u4e2a\u8282\u70b9\u6210\u4e3a\u4e3b\u8282\u70b9\uff0c\u540e\u4e09\u4e2a\u8282\u70b9\u6210\u4e3a\u4ece\u8282\u70b9\u3002&nbsp;<\/p>\n<\/p>\n<ol>\n<li><span><span>$&nbsp;kubectl&nbsp;exec&nbsp;-it&nbsp;redis-cluster-0&nbsp;&#8212;&nbsp;redis-cli&nbsp;&#8211;cluster&nbsp;create&nbsp;&#8211;cluster-replicas&nbsp;1&nbsp;$(kubectl&nbsp;get&nbsp;pods&nbsp;-l&nbsp;<\/span><span>app<\/span><span>=<\/span><span>redis<\/span><span>-cluster&nbsp;-o&nbsp;<\/span><span>jsonpath<\/span><span>=<\/span><span>&#8216;{range.items[*]}{.status.podIP}:6379&nbsp;&#8216;<\/span><span>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><\/span><\/li>\n<li><span><span>&gt;<\/span><span>&gt;<\/span><span>&gt;<\/span><span>&nbsp;Performing&nbsp;hash&nbsp;slots&nbsp;allocation&nbsp;on&nbsp;6&nbsp;nodes&#8230;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>Master[0]&nbsp;&#8211;<span>&gt;<\/span><span>&nbsp;Slots&nbsp;0&nbsp;&#8211;&nbsp;5460&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>Master[1]&nbsp;&#8211;<span>&gt;<\/span><span>&nbsp;Slots&nbsp;5461&nbsp;&#8211;&nbsp;10922&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>Master[2]&nbsp;&#8211;<span>&gt;<\/span><span>&nbsp;Slots&nbsp;10923&nbsp;&#8211;&nbsp;16383&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>Adding&nbsp;replica&nbsp;10.244.2.11:6379&nbsp;to&nbsp;10.244.9.19:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>Adding&nbsp;replica&nbsp;10.244.9.20:6379&nbsp;to&nbsp;10.244.6.10:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>Adding&nbsp;replica&nbsp;10.244.8.15:6379&nbsp;to&nbsp;10.244.7.8:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>M:&nbsp;00721c43db194c8f2cacbafd01fd2be6a2fede28&nbsp;10.244.9.19:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:[0-5460]&nbsp;(5461&nbsp;slots)&nbsp;master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>M:&nbsp;9c36053912dec8cb20a599bda202a654f241484f&nbsp;10.244.6.10:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:[5461-10922]&nbsp;(5462&nbsp;slots)&nbsp;master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>M:&nbsp;2850f24ea6367de58fb50e632fc56fe4ba5ef016&nbsp;10.244.7.8:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:[10923-16383]&nbsp;(5461&nbsp;slots)&nbsp;master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>S:&nbsp;554a58762e3dce23ca5a75886d0ccebd2d582502&nbsp;10.244.8.15:6379&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;replicates&nbsp;2850f24ea6367de58fb50e632fc56fe4ba5ef016&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>S:&nbsp;20028fd0b79045489824eda71fac9898f17af896&nbsp;10.244.2.11:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;replicates&nbsp;00721c43db194c8f2cacbafd01fd2be6a2fede28&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>S:&nbsp;87e8987e314e4e5d4736e5818651abc1ed6ddcd9&nbsp;10.244.9.20:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;replicates&nbsp;9c36053912dec8cb20a599bda202a654f241484f&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>Can&nbsp;I&nbsp;set&nbsp;the&nbsp;above&nbsp;configuration?&nbsp;(type&nbsp;&#8216;yes&#8217;&nbsp;to&nbsp;accept):&nbsp;yes&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span><span>&gt;<\/span><span>&gt;<\/span><span>&gt;<\/span><span>&nbsp;Nodes&nbsp;configuration&nbsp;updated&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span><span>&gt;<\/span><span>&gt;<\/span><span>&gt;<\/span><span>&nbsp;Assign&nbsp;a&nbsp;different&nbsp;config&nbsp;epoch&nbsp;to&nbsp;each&nbsp;node&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span><span>&gt;<\/span><span>&gt;<\/span><span>&gt;<\/span><span>&nbsp;Sending&nbsp;CLUSTER&nbsp;MEET&nbsp;messages&nbsp;to&nbsp;join&nbsp;the&nbsp;cluster&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>Waiting&nbsp;for&nbsp;the&nbsp;cluster&nbsp;to&nbsp;join&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&#8230;&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span><span>&gt;<\/span><span>&gt;<\/span><span>&gt;<\/span><span>&nbsp;Performing&nbsp;Cluster&nbsp;Check&nbsp;(using&nbsp;node&nbsp;10.244.9.19:6379)&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>M:&nbsp;00721c43db194c8f2cacbafd01fd2be6a2fede28&nbsp;10.244.9.19:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:[0-5460]&nbsp;(5461&nbsp;slots)&nbsp;master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;1&nbsp;additional&nbsp;replica(s)&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>M:&nbsp;9c36053912dec8cb20a599bda202a654f241484f&nbsp;10.244.6.10:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:[5461-10922]&nbsp;(5462&nbsp;slots)&nbsp;master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;1&nbsp;additional&nbsp;replica(s)&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>S:&nbsp;87e8987e314e4e5d4736e5818651abc1ed6ddcd9&nbsp;10.244.9.20:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:&nbsp;(0&nbsp;slots)&nbsp;slave&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;replicates&nbsp;9c36053912dec8cb20a599bda202a654f241484f&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>S:&nbsp;554a58762e3dce23ca5a75886d0ccebd2d582502&nbsp;10.244.8.15:6379&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:&nbsp;(0&nbsp;slots)&nbsp;slave&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;replicates&nbsp;2850f24ea6367de58fb50e632fc56fe4ba5ef016&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>S:&nbsp;20028fd0b79045489824eda71fac9898f17af896&nbsp;10.244.2.11:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:&nbsp;(0&nbsp;slots)&nbsp;slave&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;replicates&nbsp;00721c43db194c8f2cacbafd01fd2be6a2fede28&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>M:&nbsp;2850f24ea6367de58fb50e632fc56fe4ba5ef016&nbsp;10.244.7.8:6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;slots:[10923-16383]&nbsp;(5461&nbsp;slots)&nbsp;master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>&nbsp;&nbsp;&nbsp;1&nbsp;additional&nbsp;replica(s)&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>[OK]&nbsp;All&nbsp;nodes&nbsp;agree&nbsp;about&nbsp;slots&nbsp;configuration.&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span><span>&gt;<\/span><span>&gt;<\/span><span>&gt;<\/span><span>&nbsp;Check&nbsp;for&nbsp;open&nbsp;slots&#8230;&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span><span>&gt;<\/span><span>&gt;<\/span><span>&gt;<\/span><span>&nbsp;Check&nbsp;slots&nbsp;coverage&#8230;&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>[OK]&nbsp;All&nbsp;16384&nbsp;slots&nbsp;covered.&nbsp;&nbsp;&nbsp;<\/span><\/li>\n<\/ol>\n<p><strong>\u9a8c\u8bc1\u96c6\u7fa4<\/strong>&nbsp;<\/p>\n<\/p>\n<ol>\n<li><span><span>[root@node01&nbsp;redis-sts]#&nbsp;kubectl&nbsp;exec&nbsp;-it&nbsp;redis-cluster-0&nbsp;&#8212;&nbsp;redis-cli&nbsp;cluster&nbsp;info&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_state:ok&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_slots_assigned:16384&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_slots_ok:16384&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_slots_pfail:0&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_slots_fail:0&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_known_nodes:6&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_size:3&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_current_epoch:6&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_my_epoch:1&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_stats_messages_ping_sent:16&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_stats_messages_pong_sent:22&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_stats_messages_sent:38&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_stats_messages_ping_received:17&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_stats_messages_pong_received:16&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_stats_messages_meet_received:5&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>cluster_stats_messages_received:38&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>[root@node01&nbsp;redis-sts]#&nbsp;for&nbsp;x&nbsp;in&nbsp;$(seq&nbsp;0&nbsp;5);&nbsp;do&nbsp;echo&nbsp;&#8220;redis-cluster-$x&#8221;;&nbsp;kubectl&nbsp;exec&nbsp;redis-cluster-$x&nbsp;&#8212;&nbsp;redis-cli&nbsp;role;&nbsp;echo;&nbsp;done&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-0&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>14&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>10.244.2.11&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>14&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-1&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>28&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>10.244.9.20&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>28&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-2&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>master&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>28&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>10.244.8.15&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>28&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-3&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>slave&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>10.244.7.8&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>connected&nbsp;&nbsp;&nbsp;<\/span><\/li>\n<li><span>28&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>redis-cluster-4&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>slave&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>10.244.9.19&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>connected&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>14&nbsp;&nbsp;&nbsp;<\/span><\/li>\n<li><span>redis-cluster-5&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>slave&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>10.244.6.10&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>6379&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>connected&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>28&nbsp;&nbsp;&nbsp;<\/span><\/li>\n<\/ol>\n<p><strong>\u6d4b\u8bd5\u96c6\u7fa4<\/strong><\/p>\n<p>\u6211\u4eec\u60f3\u4f7f\u7528\u96c6\u7fa4\uff0c\u7136\u540e\u6a21\u62df\u8282\u70b9\u7684\u6545\u969c\u3002\u5bf9\u4e8e\u524d\u4e00\u9879\u4efb\u52a1\uff0c\u6211\u4eec\u5c06\u90e8\u7f72\u4e00\u4e2a\u7b80\u5355\u7684 Python \u5e94\u7528\u7a0b\u5e8f\uff0c\u800c\u5bf9\u4e8e\u540e\u8005\uff0c\u6211\u4eec\u5c06\u5220\u9664\u4e00\u4e2a\u8282\u70b9\u5e76\u89c2\u5bdf\u96c6\u7fa4\u884c\u4e3a\u3002<\/p>\n<p><strong>\u90e8\u7f72\u70b9\u51fb\u8ba1\u6570\u5668\u5e94\u7528<\/strong><\/p>\n<p>\u6211\u4eec\u5c06\u4e00\u4e2a\u7b80\u5355\u7684\u5e94\u7528\u7a0b\u5e8f\u90e8\u7f72\u5230\u96c6\u7fa4\u4e2d\uff0c\u5e76\u5728\u5176\u524d\u9762\u653e\u7f6e\u4e00\u4e2a\u8d1f\u8f7d\u5e73\u8861\u5668\u3002\u6b64\u5e94\u7528\u7a0b\u5e8f\u7684\u76ee\u7684\u662f\u5728\u5c06\u8ba1\u6570\u5668\u503c\u4f5c\u4e3a HTTP \u54cd\u5e94\u8fd4\u56de\u4e4b\u524d\uff0c\u589e\u52a0\u8ba1\u6570\u5668\u5e76\u5c06\u5176\u5b58\u50a8\u5728 Redis \u96c6\u7fa4\u4e2d\u3002&nbsp;<\/p>\n<\/p>\n<ol>\n<li><span><span>$&nbsp;kubectl&nbsp;apply&nbsp;-f&nbsp;app-deployment-service.yml&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>service\/hit-counter-lb&nbsp;created&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>deployment.apps\/hit-counter-app&nbsp;created&nbsp;&nbsp;&nbsp;<\/span><\/li>\n<\/ol>\n<p>\u5728\u6b64\u8fc7\u7a0b\u4e2d\uff0c\u5982\u679c\u6211\u4eec\u7ee7\u7eed\u52a0\u8f7d\u9875\u9762\uff0c\u8ba1\u6570\u5668\u5c06\u7ee7\u7eed\u589e\u52a0\uff0c\u5e76\u4e14\u5728\u5220\u9664Pod\u4e4b\u540e\uff0c\u6211\u4eec\u770b\u5230\u6ca1\u6709\u6570\u636e\u4e22\u5931\u3002&nbsp;<\/p>\n<\/p>\n<ol>\n<li><span><span>$&nbsp;&nbsp;curl&nbsp;`kubectl&nbsp;get&nbsp;svc&nbsp;hit-counter-lb&nbsp;-o&nbsp;json|jq&nbsp;-r&nbsp;.spec.clusterIP`&nbsp;&nbsp;&nbsp;<\/span><\/span><span>&nbsp;<\/span><\/li>\n<li><span>I&nbsp;have&nbsp;been&nbsp;hit&nbsp;20&nbsp;times&nbsp;since&nbsp;deployment.&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;&nbsp;curl&nbsp;`kubectl&nbsp;get&nbsp;svc&nbsp;hit-counter-lb&nbsp;-o&nbsp;json|jq&nbsp;-r&nbsp;.spec.clusterIP`&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>I&nbsp;have&nbsp;been&nbsp;hit&nbsp;21&nbsp;times&nbsp;since&nbsp;deployment.&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;curl&nbsp;`kubectl&nbsp;get&nbsp;svc&nbsp;hit-counter-lb&nbsp;-o&nbsp;json|jq&nbsp;-r&nbsp;.spec.clusterIP`&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>I&nbsp;have&nbsp;been&nbsp;hit&nbsp;22&nbsp;times&nbsp;since&nbsp;deployment.&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;kubectl&nbsp;delete&nbsp;pods&nbsp;redis-cluster-0&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>pod&nbsp;&#8220;redis-cluster-0&#8221;&nbsp;deleted&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;kubectl&nbsp;delete&nbsp;pods&nbsp;redis-cluster-1&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>pod&nbsp;&#8220;redis-cluster-1&#8221;&nbsp;deleted&nbsp;&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>$&nbsp;&nbsp;curl&nbsp;`kubectl&nbsp;get&nbsp;svc&nbsp;hit-counter-lb&nbsp;-o&nbsp;json|jq&nbsp;-r&nbsp;.spec.clusterIP`&nbsp;&nbsp;<\/span><span>&nbsp;<\/span><\/li>\n<li><span>I&nbsp;have&nbsp;been&nbsp;hit&nbsp;23&nbsp;times&nbsp;since&nbsp;deployment&nbsp;<\/span>&nbsp;<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6559\u4f60\u5728Kubernetes\u4e0a\u90e8\u7f72Redis\u9ad8\u53ef\u7528\u96c6\u7fa4 \u6536\u85cf \u5bf9\u4e8e\u4e00\u4e2a\u6570\u636e\u5e93\u5f00\u53d1\u8005\u6765\u8bf4\uff0c\u7262\u56fa\u624e\u5b9e\u7684\u57fa\u7840\u662f\u5341\u5206\u91cd\u8981\u7684\uff0cgolang\u5b66\u4e60\u7f51\u5c31\u6765\u5e26\u5927\u5bb6\u4e00\u70b9\u70b9\u7684\u638c\u63e1\u57fa\u7840\u77e5\u8bc6\u70b9\u3002\u4eca\u5929\u672c\u7bc7\u6587\u7ae0\u5e26\u5927\u5bb6\u4e86\u89e3\u300a\u6559\u4f60\u5728Kubernetes\u4e0a\u90e8\u7f72Redis\u9ad8\u53ef\u7528\u96c6\u7fa4\u300b\uff0c\u4e3b\u8981\u4ecb\u7ecd\u4e86Redis\u3001\u6570\u636e\u5e93\u3001kubernetes\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u7684\u77e5\u8bc6\u79ef\u7d2f\u6709\u6240\u5e2e\u52a9\uff0c\u5feb\u70b9\u6536\u85cf\u8d77\u6765\u5427\uff0c\u5426\u5219\u9700\u8981\u65f6\u5c31\u627e\u4e0d\u5230\u4e86\uff01 &nbsp;Redis \u4ecb\u7ecd Redis \u4ee3\u8868REmote DIctionary Server\u662f\u4e00\u79cd\u5f00\u6e90\u7684\u5185\u5b58\u4e2d\u6570\u636e\u5b58\u50a8\uff0c\u901a\u5e38\u7528\u4f5c\u6570\u636e\u5e93\uff0c\u7f13\u5b58\u6216\u6d88\u606f\u4ee3\u7406\u3002\u5b83\u53ef\u4ee5\u5b58\u50a8\u548c\u64cd\u4f5c\u9ad8\u7ea7\u6570\u636e\u7c7b\u578b\uff0c\u4f8b\u5982\u5217\u8868\uff0c\u5730\u56fe\uff0c\u96c6\u5408\u548c\u6392\u5e8f\u96c6\u5408\u3002\u7531\u4e8eRedis\u63a5\u53d7\u591a\u79cd\u683c\u5f0f\u7684\u5bc6\u94a5\uff0c\u56e0\u6b64\u53ef\u4ee5\u5728\u670d\u52a1\u5668\u4e0a\u6267\u884c\u64cd\u4f5c\uff0c\u4ece\u800c\u51cf\u5c11\u4e86\u5ba2\u6237\u7aef\u7684\u5de5\u4f5c\u91cf\u3002\u5b83\u4ec5\u5c06\u78c1\u76d8\u7528\u4e8e\u6301\u4e45\u6027\uff0c\u800c\u5c06\u6570\u636e\u5e93\u5b8c\u5168\u4fdd\u5b58\u5728\u5185\u5b58\u4e2d\u3002Redis\u662f\u4e00\u79cd\u6d41\u884c\u7684\u6570\u636e\u5b58\u50a8\u89e3\u51b3\u65b9\u6848\uff0c\u5e76\u88abGitHub\uff0cPinterest\uff0cSnapchat\uff0cTwitter\uff0cStackOverflow\uff0cFlickr\u7b49\u6280\u672f\u5de8\u5934\u6240\u4f7f\u7528\u3002 \u4e3a\u4ec0\u4e48\u4f7f\u7528 Redis &nbsp;\u5b83\u7684\u901f\u5ea6\u975e\u5e38\u5feb\u3002\u5b83\u662f\u7528 ANSI C \u7f16\u5199\u7684\uff0c\u5e76\u4e14\u53ef\u4ee5\u5728 POSIX \u7cfb\u7edf\u4e0a\u8fd0\u884c\uff0c\u4f8b\u5982 Linux\uff0cMac OS X \u548c Solaris\u3002 &nbsp;Redis \u901a\u5e38\u88ab\u6392\u540d\u4e3a\u6700\u6d41\u884c\u7684\u952e\/\u503c\u6570\u636e\u5e93\u548c\u6700\u6d41\u884c\u7684\u4e0e\u5bb9\u5668\u4e00\u8d77\u4f7f\u7528\u7684 NoSQL \u6570\u636e\u5e93\u3002 &nbsp;\u5176\u7f13\u5b58\u89e3\u51b3\u65b9\u6848\u51cf\u5c11\u4e86\u5bf9\u4e91\u6570\u636e\u5e93\u540e\u7aef\u7684\u8c03\u7528\u6b21\u6570\u3002 &nbsp;\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u5176\u5ba2\u6237\u7aef API \u5e93\u5bf9\u5176\u8fdb\u884c\u8bbf\u95ee\u3002 &nbsp;\u6240\u6709\u6d41\u884c\u7684\u7f16\u7a0b\u8bed\u8a00\u90fd\u652f\u6301 Redis\u3002 &nbsp;\u5b83\u662f\u5f00\u6e90\u4e14\u7a33\u5b9a\u7684\u3002 \u4ec0\u4e48\u662f Redis \u96c6\u7fa4 Redis Cluster \u662f\u4e00\u7ec4 Redis \u5b9e\u4f8b\uff0c\u65e8\u5728\u901a\u8fc7\u5bf9\u6570\u636e\u5e93\u8fdb\u884c\u5206\u533a\u6765\u6269\u5c55\u6570\u636e\u5e93\uff0c\u4ece\u800c\u4f7f\u5176\u66f4\u5177\u5f39\u6027\u3002\u7fa4\u96c6\u4e2d\u7684\u6bcf\u4e2a\u6210\u5458\uff08\u65e0\u8bba\u662f\u4e3b\u526f\u672c\u8fd8\u662f\u8f85\u52a9\u526f\u672c\uff09\u90fd\u7ba1\u7406\u54c8\u5e0c\u69fd\u7684\u5b50\u96c6\u3002\u5982\u679c\u4e3b\u673a\u65e0\u6cd5\u8bbf\u95ee\uff0c\u5219\u5176\u4ece\u673a\u5c06\u5347\u7ea7\u4e3a\u4e3b\u673a\u3002\u5728\u7531\u4e09\u4e2a\u4e3b\u8282\u70b9\u7ec4\u6210\u7684\u6700\u5c0f Redis \u7fa4\u96c6\u4e2d\uff0c\u6bcf\u4e2a\u4e3b\u8282\u70b9\u90fd\u6709\u4e00\u4e2a\u4ece\u8282\u70b9\uff08\u4ee5\u5b9e\u73b0\u6700\u5c0f\u7684\u6545\u969c\u8f6c\u79fb\uff09\uff0c\u6bcf\u4e2a\u4e3b\u8282\u70b9\u90fd\u5206\u914d\u6709\u4e00\u4e2a\u4ecb\u4e8e 0 \u5230 16,383 \u4e4b\u95f4\u7684\u54c8\u5e0c\u69fd\u8303\u56f4\u3002\u8282\u70b9 A \u5305\u542b\u4ece 0 \u5230 5000 \u7684\u54c8\u5e0c\u69fd\uff0c\u8282\u70b9 B \u4ece [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-67763","post","type-post","status-publish","format-standard","hentry","category-os"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/67763","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=67763"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/67763\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=67763"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=67763"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=67763"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}