Kubernetes 1.20.5实验记录--Network Policy

Kubernetes 1.20.5实验记录–Network Policy

1、创建Deployment:

文件deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      run: deploy
  template:
    metadata:
      labels:
        run: deploy
    spec:
      containers:
      - name: deploy
        image: nginx
kubectl apply -f deploy.yaml

在这里插入图片描述

2、查看Pod状态:

kubectl get pod -o wide

在这里插入图片描述

3、创建Service:

文件service.yaml

apiVersion: v1
kind: Service
metadata:
  name: service
spec:
  ports:
  - name: 8080-80
    port: 8080
    protocol: TCP
    targetPort: 80
    nodePort: 30303
  selector:
    run: deploy
  type: NodePort
kubectl apply -f service.yaml

在这里插入图片描述

4、查看Service状态:

kubectl get service

在这里插入图片描述

6.1 无策略

1、访问测试:

(1)访问集群内部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

(2)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(3)外部访问:

curl 192.168.0.10:30303 --connect-timeout 5

在这里插入图片描述

6.2 matchLabels策略

1、创建NetworkPolicy:

文件networkpolicy-matchlabel.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: networkpolicy-matchlabel
spec:
  podSelector:
    matchLabels:
      run: deploy
  ingress:
  - from:
    - podSelector:
        matchLabels:
          access: "true"
    ports:
    - protocol: TCP
      port: 80
kubectl apply -f networkpolicy-matchlabel.yaml

在这里插入图片描述

2、查看NetworkPolicy:

kubectl get networkpolicy

在这里插入图片描述

3、查看NetworkPolicy详细信息:

kubectl describe networkpolicy networkpolicy-matchlabel

在这里插入图片描述

4、访问测试:

(1)访问集群内部(无标签):

kubectl run client1 --image=cirros sleep 3600
kubectl exec client1 -it -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

无标签Pod无法访问

(2)访问集群内部(带标签):

kubectl run client2 --image=cirros --labels="access=true" sleep 3600
kubectl exec client2 -it -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

带标签Pod可以访问

(3)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(4)外部访问:

curl 192.168.0.10:30303 --connect-timeout 5

在这里插入图片描述

5、删除NetworkPolicy:

kubectl delete -f networkpolicy-matchlabel.yaml

在这里插入图片描述

6.3 ipBlock策略

6.3.1 允许Pod所有出方向流量

1、创建NetworkPolicy:

文件networkpolicy-allow-all-egress.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: networkpolicy-allow-all-egress
spec:
  podSelector:
    matchLabels:
      run: deploy
  policyTypes:
  - Egress
  egress:
  - {}
kubectl apply -f networkpolicy-allow-all-egress.yaml

在这里插入图片描述

2、查看NetworkPolicy:

kubectl get networkpolicy

在这里插入图片描述

3、查看NetworkPolicy详细信息:

kubectl describe networkpolicy networkpolicy-allow-all-egress

在这里插入图片描述

4、访问测试:

(1)访问集群内部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

(2)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(3)外部访问:

curl 192.168.0.10:30303 --connect-timeout 5

在这里插入图片描述

5、删除NetworkPolicy:

kubectl delete -f networkpolicy-allow-all-egress.yaml

在这里插入图片描述

6.3.2 允许Pod所有入方向流量

1、创建NetworkPolicy:

文件networkpolicy-allow-all-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: networkpolicy-allow-all-ingress
spec:
  podSelector:
    matchLabels:
      run: deploy
  policyTypes:
  - Ingress
  ingress:
  - {}
kubectl apply -f networkpolicy-allow-all-ingress.yaml

在这里插入图片描述

2、查看NetworkPolicy:

kubectl get networkpolicy

在这里插入图片描述

3、查看NetworkPolicy详细信息:

kubectl describe networkpolicy networkpolicy-allow-all-ingress

在这里插入图片描述

4、访问测试:

(1)访问集群内部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

(2)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(3)外部访问:

curl 192.168.0.10:30303 --connect-timeout 5

在这里插入图片描述

5、删除NetworkPolicy:

kubectl delete -f networkpolicy-allow-all-ingress.yaml

在这里插入图片描述

6.3.3 拒绝Pod所有出方向流量

1、创建NetworkPolicy:

文件networkpolicy-deny-all-egress.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: networkpolicy-deny-all-egress
spec:
  podSelector:
    matchLabels:
      run: deploy
  policyTypes:
  - Egress
kubectl apply -f networkpolicy-deny-all-egress.yaml

在这里插入图片描述

2、查看NetworkPolicy:

kubectl get networkpolicy

在这里插入图片描述

3、查看NetworkPolicy详细信息:

kubectl describe networkpolicy networkpolicy-deny-all-egress

在这里插入图片描述

4、访问测试:

(1)访问集群内部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

(2)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(3)外部访问:

curl 192.168.0.10:30303 --connect-timeout 5

在这里插入图片描述

5、删除NetworkPolicy:

kubectl delete -f networkpolicy-deny-all-egress.yaml

在这里插入图片描述

6.3.4 拒绝Pod所有入方向流量

1、创建NetworkPolicy:

文件networkpolicy-deny-all-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: networkpolicy-deny-all-ingress
spec:
  podSelector:
    matchLabels:
      run: deploy
  policyTypes:
  - Ingress
kubectl apply -f networkpolicy-deny-all-ingress.yaml

在这里插入图片描述

2、查看NetworkPolicy:

kubectl get networkpolicy

在这里插入图片描述

3、查看NetworkPolicy详细信息:

kubectl describe networkpolicy networkpolicy-deny-all-ingress

在这里插入图片描述

4、访问测试:

(1)访问集群内部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

(2)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(3)外部访问:

curl 192.168.0.10:30303 --connect-timeout 5

在这里插入图片描述

5、删除NetworkPolicy:

kubectl delete -f networkpolicy-deny-all-ingress.yaml

在这里插入图片描述

6.3.5 拒绝Pod所有双方向流量

1、创建NetworkPolicy:

文件networkpolicy-deny-all-both.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: networkpolicy-deny-all-both
spec:
  podSelector:
    matchLabels:
      run: deploy
  policyTypes:
  - Ingress
  - Egress
kubectl apply -f networkpolicy-deny-all-both.yaml

在这里插入图片描述

2、查看NetworkPolicy:

kubectl get networkpolicy

在这里插入图片描述

3、查看NetworkPolicy详细信息:

kubectl describe networkpolicy networkpolicy-deny-all-both

在这里插入图片描述

4、访问测试:

(1)访问集群内部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

(2)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(3)外部访问:

curl 192.168.0.10:30303 --connect-timeout 5

在这里插入图片描述

5、删除NetworkPolicy:

kubectl delete -f networkpolicy-deny-all-both.yaml

在这里插入图片描述

6.3.6 允许Pod部分出方向流量

1、创建NetworkPolicy:

文件networkpolicy-allow-cidr-egress.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: networkpolicy-allow-cidr-egress
spec:
  podSelector:
    matchLabels:
      run: deploy
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 192.168.0.100/32
    ports:
    - protocol: TCP
      port: 80
kubectl apply -f networkpolicy-allow-cidr-egress.yaml

在这里插入图片描述

2、查看NetworkPolicy:

kubectl get networkpolicy

在这里插入图片描述

3、查看NetworkPolicy详细信息:

kubectl describe networkpolicy networkpolicy-allow-cidr-egress

在这里插入图片描述

4、访问测试:

(1)访问集群内部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

(2)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(3)外部访问:

curl 192.168.0.10:30303 --connect-timeout 5

在这里插入图片描述

5、删除NetworkPolicy:

kubectl delete -f networkpolicy-allow-cidr-egress.yaml

在这里插入图片描述

6.3.7 允许Pod部分入方向流量

1、创建客户端:

kubectl run clientx --image=cirros sleep 3600
kubectl run clienty --image=cirros sleep 3600

在这里插入图片描述

2、查看客户端地址:

kubectl get pod -o wide

在这里插入图片描述

3、创建NetworkPolicy:

文件networkpolicy-allow-cidr-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: networkpolicy-allow-cidr-ingress
spec:
  podSelector:
    matchLabels:
      run: deploy
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 10.244.189.120/32
    ports:
    - protocol: TCP
      port: 80
kubectl apply -f networkpolicy-allow-cidr-ingress.yaml

在这里插入图片描述

4、查看NetworkPolicy:

kubectl get networkpolicy

在这里插入图片描述

5、查看NetworkPolicy详细信息:

kubectl describe networkpolicy networkpolicy-allow-cidr-ingress

在这里插入图片描述

6、访问测试:

(1)访问集群内部:

kubectl exec clientx -it -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

kubectl exec clienty -it -- sh
curl 10.97.10.66:8080 --connect-timeout 5

在这里插入图片描述

(2)访问集群外部:

kubectl exec -it deploy-7ffbfc5ff4-pjwlj -- sh
curl 192.168.0.100 --connect-timeout 5

在这里插入图片描述

(3)外部访问:

外部访问,经过Worker节点,源地址经IPVS转换,存在部分问题

7、删除NetworkPolicy:

kubectl delete -f networkpolicy-allow-cidr-ingress.yaml

在这里插入图片描述

8、删除Service:

kubectl delete -f service.yaml

在这里插入图片描述

9、删除Deployment:

kubectl delete -f deploy.yaml

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值