1.calico 主机是如何跨主机通讯的
安装etcd 集群
2.k8s集群如何使用网络策略-防火墙
网络策略
想设置防火墙-不是谁都能访问的,只允许特定的客户端能访问
如果你希望在 IP 地址或端口层面(OSI 第 3 层或第 4 层)控制网络流量, 则你可以考虑为集群中特定应用使用 Kubernetes 网络策略(NetworkPolicy)。考虑以下几个方面:
1.保护谁的
2.入流量还是出流量
3.写具体的规则
防火墙功能
kubectl create ns chap11-net
网络策略
网络策略只能保护相同命名空间里的pod不能保护其他命名空间里的pod。
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: mypolicy1namespace: defaultspec:podSelector:matchLabels:run: pod1 #保护范围,也是按照标签区分,什么都不写就是保护命名空间里所有pod等同于,{}policyTypes: #限制入流量还是出流量- Ingress #入流量- Egress #出流量ingress:- from: #哪些IP可以访问我- ipBlock:cidr: 172.17.0.0/16except:- 172.17.1.0/24- namespaceSelector: #只允许name=yyy这个标签命名空间里的pod可以访问matchLabels:name: yyy- podSelector: #当前命名空间内只允许含有xx标签的主机matchLabels:xx: xxports:- protocol: TCPport: 80egress:- to:- ipBlock: #可以对外访问哪些地址cidr: 10.0.0.0/24ports:- protocol: TCPport: 5978
或的关系 和组合关系
修改主机特定标签
kubectl label pod default-testpod xx=xx -n default
修改命名空间标签
kubectl label ns default name=yyykubectl get ns -l name=yyy- namespaceSelector: #只允许name=yyy这个标签命名空间里的pod可以访问matchLabels:name: yyypodSelector: #标签为yyy命名空间内只允许含有xx标签的主机matchLabels:xx: xx
允许192.168.26.0/24网段可以访问80端口,但是不能访问其他端口。
允许任何命名空间里含有xx=xx标签的pod访问,只能访问8080不能访问其他的。
一旦写了网络策略-除了被允许的客户端,其他客户端都是拒绝的。
设置除了被允许的客户端之外没其他都允许
kind: NetworkPolicymetadata:name: mypolicy1namespace: defaultspec:podSelector:matchLabels:run: pod1 #保护范围,也是按照标签区分,什么都不写就是保护命名空间里所有pod等同于,{}policyTypes: #限制入流量还是出流量- Ingress #入流量- Egress #出流量ingress:- from: #哪些IP可以访问我- ipBlock:cidr: 192.168.26.0/24ports:- protocol: TCPport: 80- from:- namespaceSelector:matchLabels:podSelector:matchLabels:xx: xxports:- protocol: TCPport: 8080
kind: NetworkPolicymetadata:name: mypolicy1namespace: defaultspec:podSelector:matchLabels:run: pod1policyTypes:- Egress #出流量egress:- to:- namespaceSelector:matchLabels:kubernetes.io/metadata.name: kube-systempodSelector:matchLabels:k8s-app: kube-dnsports:- protocol: UDPport: 53- to:- podSelector:matchLabels:run: pod2ports:- protocol: TCPport: 80
允许所有入站流量
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: allow-all-ingressspec:podSelector: {}ingress:- {}policyTypes:- Ingress
