123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- apiVersion: v1
- kind: Service
- metadata:
- annotations:
- service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
- name: cockroachdb
- labels:
- app: cockroachdb
- spec:
- ports:
- # The main port, served by gRPC, serves Postgres-flavor SQL, internode
- # traffic and the cli.
- - port: 26257
- targetPort: 26257
- name: grpc
- # The secondary port serves the UI as well as health and debug endpoints.
- - port: 8080
- targetPort: 8080
- name: http
- clusterIP: None
- selector:
- app: cockroachdb
- ---
- apiVersion: apps/v1alpha1
- kind: PetSet
- metadata:
- name: cockroachdb
- spec:
- serviceName: "cockroachdb"
- replicas: 5
- template:
- metadata:
- labels:
- app: cockroachdb
- annotations:
- pod.alpha.kubernetes.io/initialized: "true"
- spec:
- containers:
- - name: cockroachdb
- # Runs the master branch. Not recommended for production, but since
- # CockroachDB is in Beta, you don't want to run it in production
- # anyway. See
- # https://hub.docker.com/r/cockroachdb/cockroach/tags/
- # if you prefer to run a beta release.
- image: cockroachdb/cockroach
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 26257
- name: grpc
- - containerPort: 8080
- name: http
- volumeMounts:
- - name: datadir
- mountPath: /cockroach/cockroach-data
- command:
- - "/bin/bash"
- - "-ecx"
- - |
- # The use of qualified `hostname -f` is crucial:
- # Other nodes aren't able to look up the unqualified hostname.
- CRARGS=("start" "--logtostderr" "--insecure" "--host" "$(hostname -f)")
- # TODO(tschottdorf): really want to use an init container to do
- # the bootstrapping. The idea is that the container would know
- # whether it's on the first node and could check whether there's
- # already a data directory. If not, it would bootstrap the cluster.
- # We will need some version of `cockroach init` back for this to
- # work. For now, just do the same in a shell snippet.
- # Of course this isn't without danger - if node0 loses its data,
- # upon restarting it will simply bootstrap a new cluster and smack
- # it into our existing cluster.
- # There are likely ways out. For example, the init container could
- # query the kubernetes API and see whether any other nodes are
- # around, etc. Or, of course, the admin can pre-seed the lost
- # volume somehow (and in that case we should provide a better way,
- # for example a marker file).
- if [ ! "$(hostname)" == "cockroachdb-0" ] || \
- [ -e "/cockroach/cockroach-data/COCKROACHDB_VERSION" ]
- then
- CRARGS+=("--join" "cockroachdb")
- fi
- /cockroach/cockroach ${CRARGS[*]}
- volumes:
- - name: datadir
- persistentVolumeClaim:
- claimName: datadir
- volumeClaimTemplates:
- - metadata:
- name: datadir
- annotations:
- volume.alpha.kubernetes.io/storage-class: anything
- spec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
|