kubernetes Network Policies 는 일부 탭 이 있 는 Pod 에 만 접근 할 수 있 습 니 다.

1. 규칙 설명:
예 를 들 어 apiserver 서 비 스 는 태그 app = bookstore, role = api 가 있 는 pod 에 배치 되 어 있 습 니 다.
  • app = bookstore 태그 가 있 는 pod 만 bookstorePod 에 접근 할 수 있 습 니 다
  • 기타 pod 는 이 pod 에 접근 할 수 없습니다
  • 다음 그림 에서 보 듯 이:
    2 、 미 러 사용 준비:
  • Nginx 미 러 다운로드
    docker pull nginx
  • Dockerfile (wget 추가)
    FROM nginx
    RUN apt-get update 
    RUN apt-get install -y iputils-ping iproute2 wget
    은 주로 ip 등 네트워크 명령 을 설치 하려 고 합 니 다
  • .
  • 미 러 재 구축
    docker build -t mybusybox .  
    3. 해당 Pod 만 들 기
  • default 네 임 스페이스 에서 app = nginx 태그 가 있 는 pod 를 만 듭 니 다. 이름 은 bookstore
    kubectl run bookstore --image=mybusybox --labels app=bookstore,role=api --expose --port 80 --image-pull-policy=IfNotPresent
  • 입 니 다.
  • default 네 임 스페이스 에서 Nginx 서 비 스 를 가 진 pod 를 만 듭 니 다. 이름 은 frontend
    kubectl run frontend --image=mybusybox --labels app=bookstore,role=frontend  --image-pull-policy=IfNotPresent
  • 입 니 다.
  • policy - demo 네 임 스페이스 에서 Nginx 서 비 스 를 가 진 pod 를 만 듭 니 다. 이름 은 coffeeshop
    kubectl run coffeeshop -n policy-demo --image=mybusybox --labels app=coffeeshop,role=api  --image-pull-policy=IfNotPresent
  • 입 니 다.
  • pod 생 성 현황 보기
    [root@master day02]# kubectl get pod  -owide
    NAME                         READY   STATUS    RESTARTS   AGE   IP             NODE     NOMINATED NODE
    bookstore-6dc84486c7-wljn8   1/1     Running   0          65s   192.168.1.32   slave1   
    frontend-6b855d4b8d-c2nft    1/1     Running   0          59s   192.168.2.51   slave2   
    [root@master day02]# kubectl get pod  -owide -npolicy-demo
    NAME                         READY   STATUS    RESTARTS   AGE   IP             NODE     NOMINATED NODE
    coffeeshop-95cd499f8-d2dcn   1/1     Running   0          12s   192.168.2.52   slave2   
    [root@master day02]# 
    
  • 4. 테스트 시작
    4.1 정책 을 사용 하지 않 은 테스트
              ,       ,       

    4.2 전략 을 사용 하 는 테스트 시작
  • NetworkPolicy 형식의 Yml 파일 을 만 듭 니 다. 예 를 들 어 api - allow. Yml
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata: 
      name: api-allow
    spec: 
      podSelector: 
        matchLabels: 
          app:  bookstore
          role: api
      ingress:  
      - from: 
        - podSelector: 
            matchLabels: 
              app: bookstore
    이 policy 는 태그 만 app = bookstore, role = api 의 pod 가 유효 합 니 다. 이 pod 의 입 소 트 래 픽 을 제한 하 는 전략 은 egress 에 관여 하지 않 았 습 니 다. 즉, 출구 트 래 픽 은 허용 되 었 습 니 다
  • .
  • 효력 발생
    kubectl create -f api-allow.yaml 
  • bookstore 의 입 소 규칙 (지정 한 탭 이 있 는 pod 만 접근 할 수 있 습 니까?)
    #    :   frontend pod,        bookstore  Nginx  ? 
    [root@master day02]# kubectl exec -it frontend-6b855d4b8d-c2nft sh
    # wget --timeout=1 http://bookstore -O-
    --2018-10-11 02:52:30--  http://bookstore/
    Resolving bookstore (bookstore)... 10.96.172.80
    Connecting to bookstore (bookstore)|10.96.172.80|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 612 [text/html]
    Saving to: 'STDOUT'
    
    -                                        0%[                                                                           ]       0  --.-KB/s               
    
    
    Welcome to nginx!
    
    
    
    

    Welcome to nginx!

    If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

    For online documentation and support please refer to nginx.org.
    Commercial support is available at nginx.com.

    Thank you for using nginx.

    - 100%[==========================================================================>] 612 --.-KB/s in 0s 2018-10-11 02:52:30 (98.5 MB/s) - written to stdout [612/612] # : coffeeshop pod, bookstore [root@master day02]# kubectl exec -it coffeeshop-95cd499f8-d2dcn sh -npolicy-demo # wget -O- --timeout=1 http://bookstore --2018-10-11 02:55:04-- http://bookstore/ Resolving bookstore (bookstore)... failed: Name or service not known. wget: unable to resolve host address 'bookstore' # wget 192.168.1.32 --2018-10-11 02:55:51-- http://192.168.1.32/ Connecting to 192.168.1.32:80... failed: Connection timed out. Retrying. --2018-10-11 02:57:59-- (try: 2) http://192.168.1.32/ Connecting to 192.168.1.32:80... ^C #
    은 api - allow 전략 이 작용 했다 고 설명 했다.일부 pod 만 접근 가능
  • 5. 청소 작업
    kubectl delete networkpolicy api-allow
    kubectl delete svc bookstore
    kubectl delete deployment bookstore frontend
    kubectl delete deployment coffeeshop -n policy-demo 

    좋은 웹페이지 즐겨찾기