mirror of
https://github.com/slurm-personal/school-dev-k8s.git
synced 2026-06-27 13:50:24 +00:00
fix numeration
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# Local Development
|
||||
|
||||
[Ссылка](https://kubernetes.io/ru/docs/tasks/tools/install-minikube/) на скачивание\как установить minikube
|
||||
|
||||
В среде Windows, рекомендуем выполнять команды в [Git Bash](https://git-scm.com/downloads)
|
||||
|
||||
[Описание и решение](https://github.com/Slurmio/school-dev-k8s/blob/main/practice/8.local-development/problems_window.md) возможных проблем на платформе Windows.
|
||||
|
||||
## 1. Запускаем minikube
|
||||
|
||||
Для этого выполняем команду:
|
||||
|
||||
```bash
|
||||
minikube start
|
||||
```
|
||||
|
||||
И ждем завершения выполнения. После этого можем проверить что все работает:
|
||||
|
||||
```bash
|
||||
kubectl get po -A
|
||||
```
|
||||
|
||||
Должно вернуть что то типа:
|
||||
|
||||
```bash
|
||||
kube-system coredns-66bff467f8-mwqh4 1/1 Running 0 5m
|
||||
kube-system etcd-minikube 1/1 Running 0 5m
|
||||
kube-system kube-apiserver-minikube 1/1 Running 0 5m
|
||||
kube-system kube-controller-manager-minikube 1/1 Running 0 5m
|
||||
kube-system kube-proxy-mq6g6 1/1 Running 0 5m
|
||||
kube-system kube-scheduler-minikube 1/1 Running 0 5m
|
||||
kube-system storage-provisioner 1/1 Running 0 5m
|
||||
```
|
||||
|
||||
## 2. Запускаем приложение
|
||||
|
||||
Сначала нужно подключиться к докеру в minikube. Для этого выполним команду:
|
||||
|
||||
```bash
|
||||
eval $(minikube docker-env)
|
||||
```
|
||||
|
||||
Дальше билдим образ
|
||||
|
||||
> ВАЖНО!!! нужно находиться в директории `~/school-dev-k8s/practice/8.local-development/app/`
|
||||
|
||||
```bash
|
||||
docker build . -t myapp:dev
|
||||
```
|
||||
|
||||
После этого В ОТДЕЛЬНОЙ КОНСОЛИ запускаем команду для монтирования
|
||||
локальной директории в minikube.
|
||||
|
||||
> ВАЖНО!!! нужно находиться в директории `~/school-dev-k8s/practice/8.local-development/app/`
|
||||
|
||||
```bash
|
||||
minikube mount .:/app
|
||||
```
|
||||
|
||||
и оставляем ее висеть
|
||||
|
||||
Дальше возвращаемся в первую консоль и там аплаим манифесты
|
||||
|
||||
```bash
|
||||
kubectl apply -f kube/
|
||||
```
|
||||
|
||||
Проверяем что приложение запустилось
|
||||
|
||||
```bash
|
||||
kubectl get po
|
||||
```
|
||||
|
||||
и можем открыть его в браузере. Для этого можно просто выполнить команду:
|
||||
|
||||
```bash
|
||||
minikube service myapp
|
||||
```
|
||||
|
||||
## 3. Вносим изменения в код
|
||||
|
||||
Открываем файл app.py
|
||||
и меняем строку
|
||||
|
||||
```diff
|
||||
- return "Hello, World!"
|
||||
+ return "Hello, Updated!"
|
||||
```
|
||||
Проверяем что приложение зарелоадилось
|
||||
|
||||
```bash
|
||||
kubectl logs <pod_name>
|
||||
```
|
||||
|
||||
Должно быть такое:
|
||||
|
||||
```bash
|
||||
* Detected change in '/app/app.py', reloading
|
||||
* Restarting with stat
|
||||
```
|
||||
|
||||
и можем проверить в браузере что изменения действительно применились
|
||||
|
||||
## 4. Запускаем dashboard
|
||||
|
||||
```bash
|
||||
minikube dashboard
|
||||
```
|
||||
@@ -0,0 +1,8 @@
|
||||
FROM python:3.6.8
|
||||
|
||||
COPY requirements.txt /app/requirements.txt
|
||||
RUN pip install -r /app/requirements.txt
|
||||
|
||||
COPY . /app
|
||||
|
||||
ENTRYPOINT python /app/app.py
|
||||
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
|
||||
from flask import Flask
|
||||
from flask import request
|
||||
|
||||
config = {
|
||||
"port": os.environ.get('PORT', 8000),
|
||||
"debug": os.environ.get('DEBUG', False)
|
||||
}
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route("/")
|
||||
def hello():
|
||||
return "Hello, Updated!"
|
||||
|
||||
@app.route("/api/sum")
|
||||
def sum():
|
||||
a = request.args.get('a')
|
||||
b = request.args.get('b')
|
||||
return "{0}+{1}={2}".format(a, b, int(a)+int(b))
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=config["port"], debug=config["debug"])
|
||||
@@ -0,0 +1,31 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: myapp
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: myapp
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: myapp
|
||||
spec:
|
||||
containers:
|
||||
- name: api
|
||||
image: myapp:dev
|
||||
env:
|
||||
- name: PYTHONUNBUFFERD
|
||||
value: "1"
|
||||
- name: DEBUG
|
||||
value: "True"
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
volumeMounts:
|
||||
- name: code
|
||||
mountPath: /app
|
||||
volumes:
|
||||
- name: code
|
||||
hostPath:
|
||||
path: /app
|
||||
@@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: myapp
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
selector:
|
||||
app: myapp
|
||||
ports:
|
||||
- port: 8000
|
||||
targetPort: 8000
|
||||
@@ -0,0 +1,5 @@
|
||||
Flask==1.1.2
|
||||
itsdangerous==1.1.0
|
||||
Jinja2==2.11.2
|
||||
MarkupSafe==1.1.1
|
||||
Werkzeug==1.0.1
|
||||
@@ -0,0 +1,46 @@
|
||||
## Не запускается minikube - minikube start
|
||||
|
||||
Возможно вам надо включить Hyper-V. Запускаем PowerShell с админскими правами.
|
||||
Включаем
|
||||
```
|
||||
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
|
||||
```
|
||||
После проделанной работы отключаем
|
||||
```
|
||||
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
|
||||
```
|
||||
|
||||
## Не монитруется локальная директория в minikube - minikube mount .:/app
|
||||
|
||||
Ошибка `X Exiting due to HOST_PATH_MISSING: Cannot find directory .;C for mount`
|
||||
|
||||
Нужно указать абсолютный путь. Указываем свое имя профиля - `<ваше имя профиля>`
|
||||
```
|
||||
minikube mount "C:\Users\<ваше имя профиля>\devk8s\practice\12.local-development\app:/app"
|
||||
```
|
||||
или
|
||||
```
|
||||
minikube mount C:\\Users\\<ваше имя профиля>\\devk8s\\practice\\12.local-development\\app:/app
|
||||
```
|
||||
|
||||
## Всё равно не монтирует директорию в minikube
|
||||
|
||||
Ошибка
|
||||
```
|
||||
Process exited with status 32
|
||||
stdout:
|
||||
|
||||
stderr:
|
||||
mount: /app: mount(2) system call failed: Connection timed out.
|
||||
```
|
||||
|
||||
Нужно отключить брандмауэр Windows
|
||||
|
||||
Или задать правила в брандмауэр Windows. Создать два правила (UDP/TCP протоколов) для - Правила для входящих подключений. Задать в поле `Программа` путь, где лежит программа `C:\Program Files\Kubernetes\Minikube\minikube.exe`. В поле `Локальный адрес` задать IP диапазон из 1-ого и 2-ого октета в 16-ой маски `172.25.0.0./16`. Остальные поля `Любой`.
|
||||
|
||||
Узнаем свой IP диапазон, где работает minikube.
|
||||
```
|
||||
$ minikube ip
|
||||
|
||||
172.25.46.107
|
||||
```
|
||||
Reference in New Issue
Block a user