(이미지만 참고) Refernece : https://www.youtube.com/watch?v=TFAASAfO_gg





외부 또는 중요한 내부 서버와 통신할 때 ACL을 뚫어서 통신할 때가 있다.


현재 kubernetes 클러스터의 서버(node)만 보고 ACL을 뚫으면 나중에 새로운 서버가 추가되고 새로운 장비에 실행된 pod에서는 막힌 부분 때문에 에러가 발생할 것이다.



특정 장비(node)에만 pod를 배포하면 이슈가 없을 것이다.



이에 대한 2가지 방법이 있다.


1. pod 적용


이 방식은 공식 문서에 있는 방식이다. 



https://kubernetes.io/docs/concepts/configuration/assign-pod-node/






2. deployment 적용




$ kubectl label nodes google-k8s-worker001 server=google-config

$ kubectl label nodes google-k8s-worker002 server=google-config



$ kubectl get nodes -l server=google-config
NAME               STATUS   ROLES   AGE   VERSION
google-k8s-worker001   Ready    node    14d   v1.11.5

google-k8s-worker002   Ready    node    14d   v1.11.5
 


apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: google-config
namespace: production
spec:
selector:
matchLabels:
app: google-config
replicas: 2
minReadySeconds: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 3
maxUnavailable: 3
template:
metadata:
labels:
app: google-config
spec:
nodeSelector:
server: google-config

containers:
- name: google-config
image: dockerhub-url
imagePullPolicy: Always


테스트 방법은 다음과 같다. 

google-config를 1번 2번 장비에서만 실행되게 했다.


$ kubectl delete pod $(kubectl get pods | grep config | awk '{print $1}') 


삭제된 pod가 계속 1번 2번 장비에서 실행되는지 확인한다.




Posted by 김용환 '김용환'

댓글을 달아 주세요