{"id":1620,"date":"2020-06-21T18:01:49","date_gmt":"2020-06-21T10:01:49","guid":{"rendered":"http:\/\/39.97.231.10\/?p=1620"},"modified":"2020-06-21T18:01:49","modified_gmt":"2020-06-21T10:01:49","slug":"kubernetes-networkpolicy","status":"publish","type":"post","link":"http:\/\/www.weijing.co\/?p=1620","title":{"rendered":"Kubernetes  NetworkPolicy"},"content":{"rendered":"<p data-mpa-powered-by=\\\"yiban.io\\\">\u4f7f\u7528 Kubernetes \u7684 NetworkPolicy API \u58f0\u660e\u7f51\u7edc\u7b56\u7565\u53bb\u7ba1\u7406 Pod \u4e4b\u95f4\u7684\u901a\u4fe1\u3002<\/p>\n<p><strong>\u00a0 \u00a0\u521b\u5efa\u670d\u52a1\u5e76\u8fdb\u884c\u66b4\u9732\u00a0 \u00a0<\/strong><br \/>\n\u521b\u5efa\u4e00\u4e2anginx deployment \u5e76\u4e14\u901a\u8fc7\u670d\u52a1\u5c06\u5176\u66b4\u9732\uff0c\u4e3a\u4e86\u67e5\u770b Kubernetes \u7f51\u7edc\u7b56\u7565\u662f\u600e\u6837\u5de5\u4f5c\u7684\uff0c\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2anginx deployment \u5e76\u4e14\u901a\u8fc7\u670d\u52a1\u5c06\u5176\u66b4\u9732\u3002<\/p>\n<pre>$ kubectl create deployment nginx --image=nginx\ndeployment \\\"nginx\\\" created\n$ kubectl expose deployment nginx --port=80\nservice \\\"nginx\\\" exposed<\/pre>\n<section class=\\\"code-snippet__fix code-snippet__js\\\">\u5728 default \u547d\u540d\u7a7a\u95f4\u4e0b\u8fd0\u884c\u4e86\u4e24\u4e2a\u00a0nginx\u00a0pod\uff0c\u800c\u4e14\u901a\u8fc7\u4e00\u4e2a\u540d\u5b57\u4e3a\u00a0nginx\u00a0\u7684\u670d\u52a1\u8fdb\u884c\u4e86\u66b4\u9732<\/p>\n<pre>$ kubectl get svc,pod\nNAME                        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE\nsvc\/kubernetes              10.100.0.1    &lt;none&gt;        443\/TCP    46m\nsvc\/nginx                   10.100.0.16   &lt;none&gt;        80\/TCP     33s\nNAME                        READY         STATUS        RESTARTS   AGE\npo\/nginx-701339712-e0qfq    1\/1           Running       0          35s\n<\/pre>\n<h2><\/h2>\n<h2 id=\\\"\u6d4b\u8bd5\u670d\u52a1\u80fd\u591f\u88ab\u5176\u5b83\u7684-pod-\u8bbf\u95ee\\\">\u6d4b\u8bd5\u670d\u52a1\u80fd\u591f\u88ab\u5176\u5b83\u7684 pod \u8bbf\u95ee<\/h2>\n<h2><\/h2>\n<p>\u60a8\u5e94\u8be5\u53ef\u4ee5\u4ece\u5176\u5b83\u7684 pod \u8bbf\u95ee\u8fd9\u4e2a\u65b0\u7684\u00a0<code>nginx<\/code>\u00a0\u670d\u52a1\u3002\u4e3a\u4e86\u9a8c\u8bc1\u5b83\uff0c\u4ece default \u547d\u540d\u7a7a\u95f4\u4e0b\u7684\u5176\u5b83 pod \u6765\u8bbf\u95ee\u8be5\u670d\u52a1\u3002\u8bf7\u60a8\u786e\u4fdd\u5728\u8be5\u547d\u540d\u7a7a\u95f4\u4e0b\u6ca1\u6709\u6267\u884c\u5b64\u7acb\u52a8\u4f5c\u3002<br \/>\n\u542f\u52a8\u4e00\u4e2a busybox \u5bb9\u5668\uff0c\u7136\u540e\u5728\u5bb9\u5668\u4e2d\u4f7f\u7528\u00a0wget\u00a0\u547d\u4ee4\u53bb\u8bbf\u95ee\u00a0nginx\u00a0\u670d\u52a1\uff1a<\/p>\n<pre>$ kubectl run busybox --rm -ti --image=busybox \/bin\/sh\nWaiting for pod default\/busybox-472357175-y0m47 to be running, status is Pending, pod ready: false\nHit enter for command prompt\n\/ # wget --spider --timeout=1 nginx\nConnecting to nginx (10.100.0.16:80)\n\/ #\n<\/pre>\n<h2 id=\\\"\u9650\u5236\u8bbf\u95ee-nginx-\u670d\u52a1\\\">\u9650\u5236\u8bbf\u95ee\u00a0nginx\u00a0\u670d\u52a1<\/h2>\n<p>\u5982\u679c\u8bf4\u60a8\u60f3\u9650\u5236\u00a0nginx\u00a0\u670d\u52a1\uff0c\u53ea\u8ba9\u90a3\u4e9b\u62e5\u6709\u6807\u7b7e\u00a0access: true\u00a0\u7684 pod \u8bbf\u95ee\u5b83\uff0c\u90a3\u4e48\u60a8\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a\u53ea\u5141\u8bb8\u4ece\u90a3\u4e9b pod \u8fde\u63a5\u7684\u00a0NetworkPolicy\uff1a<\/p>\n<div>\n<pre>kind: NetworkPolicy\napiVersion: networking.k8s.io\/v1\nmetadata:\n  name: access-nginx\nspec:\n  podSelector:\n    matchLabels:\n      run: nginx\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          access: \\\"true\\\"<\/pre>\n<\/div>\n<h2 id=\\\"\u4e3a\u670d\u52a1\u6307\u5b9a\u7b56\u7565\\\">\u4e3a\u670d\u52a1\u6307\u5b9a\u7b56\u7565<\/h2>\n<p>\u4f7f\u7528 kubectl \u5de5\u5177\u6839\u636e\u4e0a\u9762\u7684 nginx-policy.yaml \u6587\u4ef6\u521b\u5efa\u4e00\u4e2a NetworkPolicy\uff1a<\/p>\n<pre>$ kubectl create -f nginx-policy.yaml\nnetworkpolicy \\\"access-nginx\\\" created\n<\/pre>\n<h2 id=\\\"\u5f53\u8bbf\u95ee\u6807\u7b7e\u6ca1\u6709\u5b9a\u4e49\u65f6\u6d4b\u8bd5\u8bbf\u95ee\u670d\u52a1\\\">\u5f53\u8bbf\u95ee\u6807\u7b7e\u6ca1\u6709\u5b9a\u4e49\u65f6\u6d4b\u8bd5\u8bbf\u95ee\u670d\u52a1<\/h2>\n<p>\u5982\u679c\u60a8\u5c1d\u8bd5\u4ece\u6ca1\u6709\u8bbe\u5b9a\u6b63\u786e\u6807\u7b7e\u7684 pod \u4e2d\u53bb\u8bbf\u95ee\u00a0nginx\u00a0\u670d\u52a1\uff0c\u8bf7\u6c42\u5c06\u4f1a\u8d85\u65f6\uff1a<\/p>\n<pre>$ kubectl run busybox --rm -ti --image=busybox \/bin\/sh\nWaiting for pod default\/busybox-472357175-y0m47 to be running, status is Pending, pod ready: false\nHit enter for command prompt\n\/ # wget --spider --timeout=1 nginx\nConnecting to nginx (10.100.0.16:80)\nwget: download timed out\n\/ #\n<\/pre>\n<h2 id=\\\"\u5b9a\u4e49\u8bbf\u95ee\u6807\u7b7e\u540e\u518d\u6b21\u6d4b\u8bd5\\\">\u5b9a\u4e49\u8bbf\u95ee\u6807\u7b7e\u540e\u518d\u6b21\u6d4b\u8bd5<\/h2>\n<p>\u521b\u5efa\u4e00\u4e2a\u62e5\u6709\u6b63\u786e\u6807\u7b7e\u7684 pod\uff0c\u60a8\u5c06\u770b\u5230\u8bf7\u6c42\u662f\u88ab\u5141\u8bb8\u7684\uff1a<\/p>\n<pre>$ kubectl run busybox --rm -ti --labels=\\\"access=true\\\" --image=busybox \/bin\/sh\nWaiting for pod default\/busybox-472357175-y0m47 to be running, status is Pending, pod ready: false\nHit enter for command prompt\n\/ # wget --spider --timeout=1 nginx\nConnecting to nginx (10.100.0.16:80)\n\/ #<\/pre>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>\u4f7f\u7528 Kubernetes \u7684 NetworkPolicy API \u58f0\u660e\u7f51\u7edc\u7b56\u7565\u53bb\u7ba1\u7406 Pod \u4e4b\u95f4\u7684\u901a\u4fe1\u3002  &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"http:\/\/www.weijing.co\/?p=1620\"> <span class=\"screen-reader-text\">Kubernetes  NetworkPolicy<\/span> \u67e5\u770b\u5168\u6587 &raquo;<\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"categories":[104,123],"tags":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"mailpoet_newsletter_max":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false,"shop_catalog":false,"shop_single":false,"shop_thumbnail":false},"uagb_author_info":{"display_name":"weijing","author_link":"http:\/\/www.weijing.co\/?author=4"},"uagb_comment_info":0,"uagb_excerpt":"\u4f7f\u7528 Kubernetes \u7684 NetworkPolicy API \u58f0\u660e\u7f51\u7edc\u7b56\u7565\u53bb\u7ba1\u7406 Pod \u4e4b\u95f4\u7684\u901a\u4fe1\u3002 &hellip;","_links":{"self":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts\/1620"}],"collection":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1620"}],"version-history":[{"count":0,"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts\/1620\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1620"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}