Что я намеревался сделать:
- Настройте Kubernetes в Digital Ocean
- Настроить набор реплик MongoDB в кубернетах
ИЗМЕНИТЬ: шаги, которые я использовал для настройки Kubernetes
Шаги по настройке главного узла:
Настройка Docker с использованием: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker
$ sudo apt-get install -y kubelet kubeadm kubectl
$ kubeadm init —pod-network-cidr=192.168.0.0/16 —apiserver-advertise-address=<MASTER_IP>
$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
Версия Kubernetes: v1.18.3 Версия Docker: 19.03.8, сборка afacb8b7f0
Настройка узлов:
Настройка Docker с использованием: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker
$ sudo apt-get install -y kubelet kubeadm kubectl
$ kubeadm join <PUBLIC_IP>:6443 --token <token> \
--discovery-token-ca-cert-hash <hash>
Я успешно выполнил шаг 1, но не могу настроить набор репликов. Команда rs.initiate () завершается ошибкой «В новой конфигурации 1 для набора реплик rs0 не указан хост».
$kubectl get all
NAME READY STATUS RESTARTS AGE
pod/mongo-0 1/1 Running 0 16m
pod/mongo-1 1/1 Running 0 16m
pod/mongo-2 1/1 Running 0 16m
pod/nfs-client-provisioner-5d7cbcd58-qs8r6 1/1 Running 0 43h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d21h
service/mongo ClusterIP None <none> 27017/TCP 16m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nfs-client-provisioner 1/1 1 1 43h
NAME DESIRED CURRENT READY AGE
replicaset.apps/nfs-client-provisioner-5d7cbcd58 1 1 1 43h
NAME READY AGE
statefulset.apps/mongo 3/3 16m
Команда ниже не работает:
$kubectl exec -it mongo-0 -- mongo
MongoDB shell version v4.2.7
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("64863831-2775-488f-a80d-aabdeb84bad9") }
MongoDB server version: 4.2.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2020-05-31T09:46:16.537+0000 I CONTROL [initandlisten]
2020-05-31T09:46:16.537+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-05-31T09:46:16.537+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2020-05-31T09:46:16.537+0000 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2020-05-31T09:46:16.538+0000 I CONTROL [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
> rs.initiate({_id: "rs0", version: 1, members: [
... { _id: 0, host : "mongo-0.mongo:27017" },
... { _id: 1, host : "mongo-1.mongo:27017" },
... { _id: 2, host : "mongo-2.mongo:27017" }
... ]});
{
"operationTime" : Timestamp(0, 0),
"ok" : 0,
"errmsg" : "No host described in new configuration 1 for replica set rs0 maps to this node",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig",
"$clusterTime" : {
"clusterTime" : Timestamp(0, 0),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
Мои файлы yamls:
1. безголовый сервис:
apiVersion: v1
kind: Service
metadata:
name: mongo
labels:
app: mongo
spec:
ports:
- name: mongo
port: 27017
targetPort: 27017
clusterIP: None
selector:
app: mongo
- набор реплик mongodb
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongo
spec:
selector:
matchLabels:
app: mongo
serviceName: "mongo"
replicas: 3
template:
metadata:
labels:
app: mongo
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongo
image: mongo
command:
- mongod
- "--replSet"
- rs0
- "--bind_ip_all"
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-volume
mountPath: /data/db
volumeClaimTemplates:
- metadata:
name: mongo-volume
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
Проблема может быть связана с DNS. Я сделал следующее, чтобы исправить это безуспешно:
- Убедитесь, что 27017 открыт на главном и рабочем узлах
$ufw allow 27017
- В .yaml попытался установить "bind_ip" в файле .yaml на 127.0.0.1 и 0.0.0.0
Ничего не получилось.
Как исправить эту проблему?
/etc/hosts
? - person PjoterS   schedule 01.06.2020127.0.1.1 <hostname> <hostname> 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
- person RajKrishnan   schedule 02.06.2020