aws上的cassandra群集无法启动。误差如下。
信息[main]2018-10-11 08:11:42794数据库描述符。java:729 - 使用strategy org.apache.cassandra.net.ratebasedbackpressure{high\u ratio=0.9,factor=5,flow=fast}禁用背压。
警告[main]2018-10-11 08:11:42848 SimpledProvider。java:60 - 种子提供程序无法查找启动期间遇到的主机cassandra-0.cassandra.default.svc.cluster.local异常(org.apache.cassandra.exceptions.configurationexception):种子提供程序未列出任何种子。种子提供程序未列出任何种子。错误[main]2018-10-11 08:11:42851 Cassandrademon。java:708 - 启动期间遇到异常:种子提供程序未列出任何种子。
这是我的细节。
$kubectl get pods [13:48]
NAME READY STATUS RESTARTS AGE
cassandra-0 1/1 Running 0 19h
cassandra-1 0/1 CrashLoopBackOff 231 19h
$kubectl get services [13:49]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cassandra NodePort 100.69.201.208 <none> 9042:30000/TCP 1d
kubernetes ClusterIP 100.64.0.1 <none> 443/TCP 15d
$kubectl get pvc [13:50]
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
cassandra-data-cassandra-0 Pending fast 15d
cassandra-storage-cassandra-0 Bound pvc-f3ff4203-c0a4-11e8-84a8-02c7556b5a4a 320Gi RWO gp2 15d
cassandra-storage-cassandra-1 Bound pvc-1bc3f896-c0a5-11e8-84a8-02c7556b5a4a 320Gi RWO gp2 15d
$kubectl get namespaces [13:53]
NAME STATUS AGE
default Active 15d
kube-public Active 15d
kube-system Active 15d
即使是工作舱也没有装载存储。
在我试图改变之前,一切都很顺利 MAX_HEAP_SIZE
从1024米到2048米。
在那之后,即使我删除了所有旧的豆荚,服务和创建新的,但它仍然不起作用。
3条答案
按热度按时间3npbholx1#
您正在使用nodeport类型。这不会使服务成为无头服务,这就是为什么pod的ip地址不能被解析的原因。
你需要做的是创建一个单独的无头服务。您还需要创建自己的docker映像,并在入口点中运行一个脚本,该脚本将获取服务域名的所有IP。
您可以以以下项目为例:https://github.com/vyshane/cassandra-kubernetes/
kb5ga3dv2#
我试过西蒙的代码解决方案。但他给了我一个提示,那一定是无头服务。但是在我的例子中,我通过添加“clusterip:none”来创建headless服务。如果没有这一行,它将给出“seed provider cannot lookup host”。我找不到pod的dns(elassandra-0.elassandra.chargington.svc.cluster.local),但我可以找到服务的dns(elassandra.chargington.svc.cluster.local)。
有时您不需要或不想要负载平衡和单一服务ip。在这种情况下,您可以通过为集群ip(.spec.clusterip)指定“none”来创建“headless”服务。
https://kubernetes.io/docs/concepts/services-networking/service/
这是我的密码
apiVersion: v1 kind: Service metadata: labels: app: elassandra name: elassandra namespace: chargington spec: clusterIP: None ports: - name: cassandra port: 9042 - name: http port: 9200 - name: transport protocol: TCP port: 9300 selector: app: elassandra
在我的状态下我需要serviceName: elassandra
. 这对于将statefulset指向将为pod的dns名称管理域的服务是必要的。--- apiVersion: "apps/v1beta1" kind: StatefulSet metadata: name: elassandra namespace: chargington spec: serviceName: elassandra replicas: 1 template: metadata: labels: app: elassandra spec: containers: - name: elassandra image: strapdata/elassandra:6.2.3.3 imagePullPolicy: IfNotPresent ports: - containerPort: 7000 name: intra-node - containerPort: 7001 name: tls-intra-node - containerPort: 7199 name: jmx - containerPort: 9042 name: cql - containerPort: 9200 name: http protocol: TCP - containerPort: 9300 name: transport protocol: TCP env: - name: CASSANDRA_SEEDS value: elassandra-0.elassandra.chargington.svc.cluster.local - name: MAX_HEAP_SIZE value: 256M - name: HEAP_NEWSIZE value: 100M - name: CASSANDRA_CLUSTER_NAME value: "Cassandra" - name: CASSANDRA_DC value: "DC1" - name: CASSANDRA_RACK value: "Rack1" - name: CASSANDRA_ENDPOINT_SNITCH value: GossipingPropertyFileSnitch volumeMounts: - name: elassandra-data mountPath: /opt/elassandra-5.5.0.8/data volumeClaimTemplates: - metadata: name: elassandra-data annotations: volume.beta.kubernetes.io/storage-class: "" spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi
368yc8dk3#
如果其他任何人仍面临种子提供程序问题,则无法查找主机cassandra-0.cassandra.default.svc.cluster.local异常
对我来说,问题是域名。我已将种子配置为:
在我们公司,k8s集群是使用集群域部署的,而不是默认设置,所以我必须使用该域,它开始为我工作。
要了解域名,您可能需要联系您当地的kube管理员。