Skip to content

Commit 34b29a3

Browse files
draft
1 parent 9bcb951 commit 34b29a3

File tree

2 files changed

+22
-37
lines changed

2 files changed

+22
-37
lines changed

content/operate/kubernetes/architecture/_index.md

Lines changed: 21 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,28 @@ categories:
55
- docs
66
- operate
77
- kubernetes
8-
description: This section provides an overview of the architecture and considerations
9-
for Redis Enterprise for Kubernetes.
8+
description: Overview of the architecture and components of Redis Enterprise for Kubernetes.
109
hideListLinks: true
1110
linkTitle: Architecture
12-
weight: 11
11+
weight: 1
1312
---
14-
Redis bases its Kubernetes architecture on several vital concepts.
1513

16-
## Layered architecture
17-
18-
Kubernetes is an excellent orchestration tool, but it was not designed to deal with all the nuances associated with operating Redis Enterprise. Therefore, it can fail to react accurately to internal Redis Enterprise edge cases or failure conditions. Also, Kubernetes orchestration runs outside the Redis Cluster deployment and may fail to trigger failover events, for example, in split network scenarios.
19-
20-
To overcome these issues, Redis created a layered architecture approach that splits responsibilities between operations Kubernetes does well, procedures Redis Enterprise Cluster excels at, and the processes both can orchestrate together. The figure below illustrated this layered orchestration architecture:
21-
22-
{{< image filename="/images/k8s/kubernetes-overview-layered-orchestration.png" >}}
23-
24-
## Operator based deployment
25-
26-
Operator allows Redis to maintain a unified deployment solution across various Kubernetes environments, i.e., RedHat OpenShift, VMware Tanzu (Tanzu Kubernetes Grid, and Tanzu Kubernetes Grid Integrated Edition, formerly known as PKS), Google Kubernetes Engine (GKE), Azure Kubernetes Service (AKS), and vanilla (upstream) Kubernetes. Statefulset and anti-affinity guarantee that each Redis Enterprise node resides on a Pod that is hosted on a different VM or physical server. See this setup shown in the figure below:
27-
28-
{{< image filename="/images/k8s/kubernetes-overview-unified-deployment.png" >}}
29-
30-
## Network-attached persistent storage {#networkattached-persistent-storage}
31-
32-
Kubernetes and cloud-native environments require that storage volumes be network-attached to the compute instances, to guarantee data durability. Otherwise, if using local storage, data may be lost in a Pod failure event. See the figure below:
33-
34-
{{< image filename="/images/k8s/kubernetes-overview-network-attached-persistent-storage.png" >}}
35-
36-
On the left-hand side (marked #1), Redis Enterprise uses local ephemeral storage for durability. When a Pod fails, Kubernetes launches another Pod as a replacement, but this Pod comes up with empty local ephemeral storage, and the data from the original Pod is now lost.
37-
38-
On the right-hand side of the figure (marked #2), Redis Enterprise uses network-attached storage for data durability. In this case, when a Pod fails, Kubernetes launches another Pod and automatically connects it to the storage device used by the failed Pod. Redis Enterprise then instructs the Redis Enterprise database instance/s running on the newly created node to load the data from the network-attached storage, which guarantees a durable setup.
39-
40-
Redis Enterprise is not only great as an in-memory database but also extremely efficient in the way it uses persistent storage, even when the user chooses to configure Redis Enterprise to write every change to the disk. Compared to a disk-based database that requires multiple interactions (in most cases) with a storage device for every read or write operation, Redis Enterprise uses a single IOPS, in most cases, for a write operation and zero IOPS for a read operation. As a result, significant performance improvements are seen in typical Kubernetes environments, as illustrated in the figures below:
41-
42-
{{< image filename="/images/k8s/kubernetes-overview-performance-improvements-read.png" >}}{{< image filename="/images/k8s/kubernetes-overview-performance-improvements-write.png" >}}
43-
44-
## Multiple services on each pod
45-
46-
Each Pod includes multiple Redis Enterprise instances (multiple services). We found that the traditional method of deploying a Redis Enterprise database over Kubernetes, in which each Pod includes only a single Redis Enterprise instance while preserving a dedicated CPU, is notably inefficient. Redis Enterprise is exceptionally fast and in many cases can use just a fraction of the CPU resources to deliver the requested throughput. Furthermore, when running a Redis Enterprise Cluster with multiple Redis Enterprise instances across multiple Pods, the Kubernetes network, with its multiple vSwitches, can quickly become the deployment’s bottleneck. Therefore, Redis took a different approach to managing Redis Enterprise over the Kubernetes environment. Deploying multiple Redis Enterprise database instances on a single Pod allows us to better utilize the hardware resources used by the Pod such as CPU, memory, and network while keeping the same level of isolation. See the figure below:
47-
48-
{{< image filename="/images/k8s/kubernetes-overview-multiple-services-per-pod.png" >}}
14+
Redis Enterprise gives you redis's speed at scale with added durability.
15+
Kubernetes (K8s) is flexible, scalable, and automates management while reducing overhead. Redis Enterprise for Kubernetes lets you manage your Redis clusters and databases with declarative configuration files, and lets you use the advantages of Kubernetes to manage your resources. Redis Enterprise for Kubernetes uses a custom operator and custom controllers to bring the best of Redis Enterprise to Kubernetes platforms.
16+
17+
Redis Enterprise for Kubernetes provides custom resource definitions (CRDs) that allows you to to create custom resources to manage your clusters and databases. The RedisEnterpriseCluster (REC) resource creates and manages a Redis Enterprise cluster within the same namespace. The RedisEnterpriseDatabase (REDB) resource creates and manages your Redis Enterprise database.
18+
19+
overview diagram
20+
21+
Declarative configuration management... configuration YAML files - https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/
22+
Automated upgrades, creation, scaling, declare state you want and K8s manages details
23+
where is my database ... just like RS multiple databases are hosted by a redis node, just happens to be within a pod
24+
db diagram
25+
Once its up, it's just RS except...
26+
Credentials management - secrets
27+
Storage - k8s way - network attached
28+
Active-active
29+
multi-namespace
30+
flexible deployment
31+
more information?
32+
https://redis.io/redis-enterprise/advantages/

content/operate/kubernetes/deployment/deployment-options.md renamed to content/operate/kubernetes/architecture/deployment-options.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ description: Redis Enterprise for Kubernetes allows you to deploy to multiple na
99
This article describes flexible deployment options you can use to meet your specific
1010
needs.
1111
linkTitle: Deployment options
12+
aliases: [ /operate/kubernetes/deployment/deployment-options/, ]
1213
weight: 12
1314
---
1415
You can deploy Redis Enterprise for Kubernetes in several different ways depending on your database needs.

0 commit comments

Comments
 (0)