内容简介:The DataStax Kubernetes Operator for Apache Cassandra®Quick start:Installing the Cass Operator itself is straightforward. Apply the provided manifest as follows:
Cass Operator
The DataStax Kubernetes Operator for Apache Cassandra®
Getting Started
Quick start:
kubectl create -f https://raw.githubusercontent.com/datastax/cass-operator/master/docs/user/cass-operator-manifests.yaml # *** This is for GKE -> Adjust based on your cloud or storage options kubectl create -f https://raw.githubusercontent.com/datastax/cass-operator/master/operator/k8s-flavors/gke/storage.yaml kubectl -n cass-operator create -f https://raw.githubusercontent.com/datastax/cass-operator/master/operator/example-cassdc-yaml/cassandra-3.11.6/example-cassdc-minimal.yaml
Loading the operator
Installing the Cass Operator itself is straightforward. Apply the provided manifest as follows:
kubectl apply -f https://raw.githubusercontent.com/datastax/cass-operator/master/docs/user/cass-operator-manifests.yaml
Note that since the manifest will install a Custom Resource Definition , the user running the above command will need cluster-admin privileges.
This will deploy the operator, along with any requisite resources such as Role, RoleBinding, etc., to the cass-operator
namespace. You can check to see if the operator is ready as follows:
$ kubectl -n cass-operator get pods --selector name=cass-operator NAME READY STATUS RESTARTS AGE cass-operator-555577b9f8-zgx6j 1/1 Running 0 25h
Creating a storage class
You will need to create an appropriate storage class which will define the type of storage to use for Cassandra nodes in a cluster. For example, here is a storage class for using SSDs in GKE, which you can also find at operator/deploy/k8s-flavors/gke/storage.yaml :
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: server-storage provisioner: kubernetes.io/gce-pd parameters: type: pd-ssd replication-type: none volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Delete
Apply the above as follows:
kubectl apply -f https://raw.githubusercontent.com/datastax/cass-operator/master/operator/k8s-flavors/gke/storage.yaml
Creating a CassandraDatacenter
The following resource defines a Cassandra 3.11.6 datacenter with 3 nodes on one rack, which you can also find at operator/example-cassdc-yaml/cassandra-3.11.6/example-cassdc-minimal.yaml :
apiVersion: cassandra.datastax.com/v1beta1 kind: CassandraDatacenter metadata: name: dc1 spec: clusterName: cluster1 serverType: cassandra serverVersion: 3.11.6 managementApiAuth: insecure: {} size: 3 storageConfig: cassandraDataVolumeClaimSpec: storageClassName: server-storage accessModes: - ReadWriteOnce resources: requests: storage: 5Gi config: cassandra-yaml: authenticator: org.apache.cassandra.auth.PasswordAuthenticator authorizer: org.apache.cassandra.auth.CassandraAuthorizer role_manager: org.apache.cassandra.auth.CassandraRoleManager jvm-options: initial_heap_size: 800M max_heap_size: 800M
Apply the above as follows:
kubectl -n cass-operator apply -f https://raw.githubusercontent.com/datastax/cass-operator/master/operator/example-cassdc-yaml/cassandra-3.11.6/example-cassdc-minimal.yaml
You can check the status of pods in the Cassandra cluster as follows:
$ kubectl -n cass-operator get pods --selector cassandra.datastax.com/cluster=cluster1 NAME READY STATUS RESTARTS AGE cluster1-dc1-default-sts-0 2/2 Running 0 26h cluster1-dc1-default-sts-1 2/2 Running 0 26h cluster1-dc1-default-sts-2 2/2 Running 0 26h
You can check to see the current progress of bringing the Cassandra datacenter online by checking the cassandraOperatorProgress
field of the CassandraDatacenter
's status
sub-resource as follows:
$ kubectl -n cass-operator get cassdc/dc1 -o "jsonpath={.status.cassandraOperatorProgress}" Ready
( cassdc
and cassdcs
are supported short forms of CassandraDatacenter
.)
A value of "Ready", as above, means the operator has finished setting up the Cassandra datacenter.
You can also check the Cassandra cluster status using nodetool
by invoking it on one of the pods in the Cluster as follows:
$ kubectl -n cass-operator exec -it -c cassandra cluster1-dc1-default-sts-0 -- nodetool status Datacenter: dc1 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving/Stopped -- Address Load Tokens Owns (effective) Host ID Rack UN 10.233.105.125 224.82 KiB 1 65.4% 5e29b4c9-aa69-4d53-97f9-a3e26115e625 r1 UN 10.233.92.96 186.48 KiB 1 61.6% b119eae5-2ff4-4b06-b20b-c492474e59a6 r1 UN 10.233.90.54 205.1 KiB 1 73.1% 0a96e814-dcf6-48b9-a2ca-663686c8a495 r1
Features
- Proper token ring initialization, with only one node bootstrapping at a time
- Seed node management - one per rack, or three per datacenter, whichever is more
- Server configuration integrated into the CassandraDatacenter CRD
- Rolling reboot nodes by changing the CRD
- Store data in a rack-safe way - one replica per cloud AZ
- Scale up racks evenly with new nodes
- Replace dead/unrecoverable nodes
- Multi DC clusters (limited to one Kubernetes namespace)
All features are documented in the User Documentation .
Containers
The operator is comprised of the following container images working in concert:
- The operator, built from sources in the operator directory.
- The config builder init container, built from sources in datastax/cass-config-builder .
- Cassandra, built from datastax/management-api-for-apache-cassandra , with Cassandra 3.11.6 support, and experimental support for Cassandra 4.0.0-alpha3.
- ... or DSE, built from datastax/docker-images .
Requirements
- Kubernetes cluster, 1.12 or newer.
- Users who want to use a Kubernetes version from before 1.15 can use a manifest that supports x-preserve-unknown-fields on the CassandraDatacenter CRD - manifest
Contributing
As of version 1.0, Cass Operator is maintained by a team at DataStax and it is part of what powers DataStax Astra . We would love for open source users to contribute bug reports, documentation updates, tests, and features.
Developer setup
Almost every build, test, or development task requires the following pre-requisites...
- Golang 1.13
- Docker, either the docker.io packages on Ubuntu, Docker Desktop for Mac, or your preferred docker distribution.
- mage : There are some tips for using mage in docs/developer/mage.md
Building
The operator uses mage for its build process.
Build the Operator Container Image
This build task will create the operator container image, building or rebuilding the binary from golang sources if necessary:
mage operator:buildDocker
Build the Operator Binary
If you wish to perform ONLY to the golang build or rebuild, without creating a container image:
mage operator:buildGo
Testing
mage operator:testGo
End-to-end Automated Testing
Run fully automated end-to-end tests...
mage integ:run
Docs about testing are here . These work against any k8s cluster with six or more worker nodes.
Manual Local Testing
There are a number of ways to run the operator, see the following docs for more information:
- kind : Kubernetes in Docker is the recommended Kubernetes distribution for use by software engineers working on the operator. KIND can simulate a k8s cluster with multiple worker nodes on a single physical machine, though it's necessary to dial down the database memory requests.
The user documentation also contains information on spinning up your first operator instance that is useful regardless of what Kubernetes distribution you're using to do so.
Not (Yet) Supported Features
-
Cassandra:
- Integrated data repair solution
- Integrated backup and restore solution
-
DSE:
- Advanced Workloads, like Search / Graph / Analytics
Uninstall
This will destroy all of your data!
Delete your CassandraDatacenters first, otherwise Kubernetes will block deletion because we use a finalizer.
kubectl delete cassdcs --all-namespaces
Remove the operator Deployment, CRD, etc.
kubectl delete -f https://raw.githubusercontent.com/datastax/cass-operator/master/docs/user/cass-operator-manifests.yaml
Contacts
For developement questions, please reach out on Gitter, or by opening an issue on GitHub.
For usage questions, please visit our Community Forums: https://community.datastax.com
License
Copyright DataStax, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
以上所述就是小编给大家介绍的《The DataStax Kubernetes Operator for Apache Cassandra》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大型分布式网站架构设计与实践
陈康贤 / 电子工业出版社 / 2014-9-1 / 79.00元
《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了大型分布式网站架构设计的核心原理,并通过一些架构设计的典型案例,帮助读者了解大型分布式网站设计的一些常见场景及遇到的问题。 作者结合自己在阿里巴巴及淘宝网的实际工作经历展开论述。《大型分布式网站......一起来看看 《大型分布式网站架构设计与实践》 这本书的介绍吧!