1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# Moon Platform Setup
## Docker Installation
```bash
apt update
apt install -y docker.io
```
## K8S Installation
Choose the right K8S platform
### Minikube
```bash
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.21.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
```
### Kubeadm
see: https://kubernetes.io/docs/setup/independent/install-kubeadm/
```bash
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
```
## Moon Deployment
### Initiate K8S
```bash
cd $MOON_HOME
bash tools/moon_kubernetes/init_k8s.sh
```
Wait until all the kubeadm containers are in the `running` state:
```bash
watch kubectl get po --namespace=kube-system
```
You must see something like this:
$ kubectl get po --namespace=kube-system
NAME READY STATUS RESTARTS AGE
calico-etcd-7qgjb 1/1 Running 0 1h
calico-node-f8zvm 2/2 Running 1 1h
calico-policy-controller-59fc4f7888-ns9kv 1/1 Running 0 1h
etcd-varuna 1/1 Running 0 1h
kube-apiserver-varuna 1/1 Running 0 1h
kube-controller-manager-varuna 1/1 Running 0 1h
kube-dns-bfbb49cd7-rgqxn 3/3 Running 0 1h
kube-proxy-x88wg 1/1 Running 0 1h
kube-scheduler-varuna 1/1 Running 0 1h
### Deploy Moon
```bash
cd $MOON_HOME
sudo bash tools/moon_kubernetes/start_moon.sh
```
Wait until all the Moon containers are in the `running` state:
```bash
watch kubectl get po --namespace=moon
```
You must see something like this:
$ kubectl get po --namespace=moon
NAME READY STATUS RESTARTS AGE
consul-57b6d66975-9qnfx 1/1 Running 0 52m
db-867f9c6666-bq8cf 1/1 Running 0 52m
gui-bc9878b58-q288x 1/1 Running 0 51m
keystone-7d9cdbb69f-bl6ln 1/1 Running 0 52m
manager-5bfbb96988-2nvhd 1/1 Running 0 51m
manager-5bfbb96988-fg8vj 1/1 Running 0 51m
manager-5bfbb96988-w9wnk 1/1 Running 0 51m
orchestrator-65d8fb4574-tnfx2 1/1 Running 0 51m
wrapper-astonishing-748b7dcc4f-ngsvp 1/1 Running 0 51m
### Troubleshoot
check *Consul* for:
- *Components/Manager*, e.g.
```json
{
"port": 8082,
"bind": "0.0.0.0",
"hostname": "manager",
"container": "wukongsun/moon_manager:v4.3.1",
"external": {
"port": 30001,
"hostname": "$MOON_HOST"
}
}
```
- *OpenStack/Keystone*: e.g.
```json
{
"url": "http://keystone:5000/v3",
"user": "admin",
"password": "p4ssw0rd",
"domain": "default",
"project": "admin",
"check_token": false,
"certificate": false,
"external": {
"url": "http://$MOON_HOST:30006/v3"
}
}
```
### Docker-K8S Port Mapping
```yamlex
manager:
port: 8082
kport: 30001
gui:
port: 3000
kport: 30002
orchestrator:
port: 8083
kport: 30003
consul:
port: 8500
kport: 30005
keystone:
port: 5000
kport: 30006
wrapper:
port: 8080
kport: 30010
interface:
port: 8080
authz:
port: 8081
```
|