03服务和网络
考试大纲
服务和网络:20%
-
了解集群节点上的主机网络配置
-
理解 Pods 之间的连通性
-
了解 ClusterIP、NodePort、LoadBalancer 服务类型和端点
-
了解如何使用入口控制器和入口资源
-
了解如何配置和使用 CoreDNS
-
选择适当的容器网络接口插件
NetworkPolicy 网络策略
题目描述:
-
设置配置环境 kubectl config use-context k8s
-
在 internal 命名空间创建一个名为 allow-port-from-namespace 的 NetworkPolicy,确保新的 NetworkPolicy 允许 namespace internal 中的 Pods 来连接到 namespace big-corp 中的端口 9200
-
确保新的 NetworkPolicy:
-
不允许对没有在监听端口 9200 的 pods 访问
-
不允许不来自 namespace internal 的 pods 的访问
官方文档:
- https://kubernetes.io/docs/concepts/services-networking/network-policies/
- https://kubernetes.io/zh-cn/docs/concepts/services-networking/network-policies/
参考解答:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-port-from-namespace
namespace: internal
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: big-corp
ports:
- protocol: TCP
port: 9200
Service 四层负载均衡
题目描述:
-
设置配置环境 kubectl config use-context k8s
-
请重新配置现有的 Deployment front-end 以及添加名为 http 的端口规范来公开现有容器 nginx 的端口 80/tcp。
-
创建一个名为 front-end-svc 的新服务,以公开容器端口 http。 配置此服务,通过在排定的节点上的 NodePort 来公开各个 pods。
官方文档:
- https://kubernetes.io/docs/concepts/services-networking/service/
- https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/
参考解答:
- front-end Deployment 配置文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: front-end
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- name: http
containerPort: 80
protocol: TCP
- 创建一个名为 front-end-svc 服务
kubectl expose deployment front-end \
--port=80 \
--target-port=80 \
--name=front-end-svc \
--type=NodePort
Ingress 七层代理
题目描述:
-
设置配置环境 kubectl config use-context k8s
-
如下创建一个新的 nginx ingress 资源:
-
名称:pong
-
namespace: ing-internal
-
使用服务端口 5678 在路径
/hello
上公开服务 hello -
可以使用一下命令检查服务 hello 的可用性,该命令返回 hello:
curl -kL < INTERNAL_IP>/hello/
官方文档:
- https://kubernetes.io/docs/concepts/services-networking/ingress/
- https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/
参考解答: