k8s 미 러 버 전 을 업데이트 하 는 세 가지 방법
미 러 버 전 업데이트 는 k8s 일상 사용 에서 매우 흔히 볼 수 있 는 작업 으로 본 고 는 주로 업데이트 소개 의 세 가지 방법 을 소개 한다.
환경 준비
구성 요소
판본
OS
Ubuntu 18.04.1 LTS
docker
18.06.0-ce
3. 거울 준비
먼저 2 개의 서로 다른 버 전의 미 러 를 준비 하여 테스트 에 사용 합 니 다. (이미 아 리 클 라 우 드 에 2 개의 서로 다른 버 전의 nginx 미 러 를 만 들 었 습 니 다)
docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1
docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2
이 두 거울 은 버 전 번호 만 다 르 고 다른 것 은 모두 같다.
root@k8s-master:~# docker run -d --rm -p 10080:80 nginx:v1
e88097841c5feef92e4285a2448b943934ade5d86412946bc8d86e262f80a050
root@k8s-master:~# curl http://127.0.0.1:10080
----------
version: v1
hostname: f5189a5d3ad3
4. 미 러 를 업데이트 하 는 세 가지 방법
테스트 에 사용 할 Yml 파일 을 먼저 준비 합 니 다:
root@k8s-master:~# more image_update.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: image-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: image-update
spec:
containers:
- name: nginx
image: registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1
imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: image-update
ports:
- protocol: TCP
port: 10080
targetPort: 80
간단하게 검증 하기:
root@k8s-master:~# kubectl apply -f image_update.yaml
deployment.extensions "image-deployment" created
service "nginx-service" created
root@k8s-master:~# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service ClusterIP 10.254.240.225 10080/TCP 1m
root@k8s-master:~# kubectl get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE
image-deployment-58b646ffb6-d4sl7 1/1 Running 0 1m 10.10.169.131 k8s-node2
root@k8s-master:~# curl http://10.254.240.225:10080
----------
version: v1
hostname: image-deployment-58b646ffb6-d4sl7
정상적으로 작 동 하 였 으 며, 현재 버 전 은 v1 입 니 다.
거울 을 수정 하 는 방법 을 소개 한다.
(1) 프로필 수정
이게 제일 많이 쓰 는 방법 인 것 같 아 요.
프로필 을 수정 하고
nginx:v1
을 nginx:v2
로 변경 합 니 다.root@k8s-master:~# sed -i 's/nginx:v1/nginx:v2/g' image_update.yaml
프로필 적용:
root@k8s-master:~# kubectl apply -f image_update.yaml
deployment.extensions "image-deployment" configured
service "nginx-service" unchanged
root@k8s-master:~# kubectl get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE
image-deployment-55cb946d47-7tzp8 0/1 ContainerCreating 0 16s k8s-node1
image-deployment-58b646ffb6-d4sl7 1/1 Terminating 0 11m 10.10.169.131 k8s-node2
잠시 기다 린 후 v2 버 전 ready 후
root@k8s-master:~# kubectl get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE
image-deployment-55cb946d47-7tzp8 1/1 Running 0 1m 10.10.36.119 k8s-node1
root@k8s-master:~# curl http://10.254.240.225:10080
----------
version: v2
hostname: image-deployment-55cb946d47-7tzp8
v2 로 업데이트 성공
(2) 패 치 명령 사용
먼저 deployment 찾기:
root@k8s-master:~# kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
image-deployment 1 1 1 1 20m
패 치 업데이트:
root@k8s-master:~# kubectl patch deployment image-deployment --patch '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image":"registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1"}]}}}}'
deployment.extensions "image-deployment" patched
잠시 기다 린 후:
root@k8s-master:~# curl http://10.254.240.225:10080
----------
version: v1
hostname: image-deployment-58b646ffb6-hbzk9
패 치 업데이트 후 미 러 버 전 v1 업데이트
(3) set image 명령 사용
set image 명령 을 사용 하여 미 러 버 전 을 v2 로 업데이트 합 니 다.
root@k8s-master:~# kubectl set image deploy image-deployment *=registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2
root@k8s-master:~# curl http://10.254.240.225:10080
----------
version: v2
hostname: image-deployment-55cb946d47-zsdc6
잠시 기다 린 후에 버 전 은 v2 로 업데이트 되 었 습 니 다.
소결
● 본 고 는 미 러 버 전 을 업데이트 하 는 세 가지 방법 을 소개 했다. 각각 설정 파일 이다.patch 방식;set image 방식
이로써 본 고 는 하 재 를 소홀히 하고 학문 이 얕 으 며, 국 을 뿌리 고 물이 새 는 사람 이 있 으 니, 여러분 께 서 아낌없이 가르침 을 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.