С точки зрения Kubernetes вы можете попытаться сделать следующее:
- Создать развертывание
- Создать отдельный тип объекта службы
LoadBalancer
который будет указывать на ваше приложение - Протестируйте его
- Создайте новое развертывание вместо старого
- Протестируйте его снова
Пример с YAML
s:
Создание развертывания
Ниже приведен пример развертывания приложения hello:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
spec:
selector:
matchLabels:
app: hello
version: 1.0.0
replicas: 1
template:
metadata:
labels:
app: hello
version: 1.0.0
spec:
containers:
- name: hello
image: "gcr.io/google-samples/hello-app:1.0"
env:
- name: "PORT"
value: "50001"
Взгляните на определенные c части matchLabels
.
Создайте тип объекта службы LoadBalancer
, который будет указывать на ваше приложение
Ниже приведен пример службы, которая предоставит доступ к приложению приветствия:
apiVersion: v1
kind: Service
metadata:
name: hello-service
spec:
selector:
app: hello
ports:
- port: 50001
targetPort: 50001
type: LoadBalancer
Возьмите еще раз c посмотрите на selector
. Он будет соответствовать пакетам по метке app
со значением hello
.
Вы можете обратиться к официальной документации: ЗДЕСЬ!
Проверьте это
Примените оба определения YAML
и дождитесь назначения ExternalIP
. После этого проверьте, работает ли приложение.
Вывод веб-браузера со старой версией приложения:
Hello, world!
Version: 1.0.0
Hostname: hello-549db57dfd-g746m
Создание нового развертывания вместо старого
На этом шаге вы можете попробовать:
- запустите
kubectl apply -f DEPLOYMENT.yaml
в новой версии, чтобы применить различия - , попробуйте сначала удалить
Deployment
и создать новый вместо старого.
На этом шаге не удаляйте существующий LoadBalancer
.
. Используя приведенный выше пример Deployment
, мы можем смоделировать изменение версии вашего изображения, изменив the:
image: "gcr.io/google-samples/hello-app:1.0"
to:
image: "gcr.io/google-samples/hello-app:2.0"
После этого вы можете применить его или заново создать развертывание.
LoadBalancer
не должен был менять IP-адрес, поскольку он не воссоздается.
Протестируйте снова
Вывод веб-браузера с новой версией приложения:
Hello, world!
Version: 2.0.0
Hostname: hello-84d554cbdf-rbwgx
Дайте мне знать, помогло ли вам это решение.