- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: httpd-deployment
- spec:
- selector:
- matchLabels:
- app: httpd # 通过标签选择被控制的pod
- replicas: 3
- template:
- metadata:
- labels:
- app: httpd # 给pod打上标签,Service、Deployment 将会用这个 label 来挑选 Pod
- spec:
- containers:
- - name: httpd
- image: httpd
- ports:
- - containerPort: 80 # 转发到后端pod的端口号
Pod分配了各自的IP地址,但这些IP只能被Kubernetes Cluster中的容器与节点访问。
- apiVersion: v1
- kind: Service
- metadata:
- name: httpd-service # 必填,service名称
- spec:
- selector:
- app: httpd # 必填,在selector字段中指定了为哪一个标签的app进行负载均衡
- ports: # 将 Service 的 8080 端口映射到 Pod 的 80 端口,使用 TCP 协议
- - protocol: TCP
- port: 8080 # service监听端口
- targetPort: 80 # 转发到后端pod的端口号
httpd-service分配到一个CLUSTER-IP,可以通过该IP访问后端的httpd Pod。
- $ sudo iptables-save | grep '10.98.165.152'
- -A KUBE-SERVICES ! -s 10.244.0.0/16 -d 10.98.165.152/32 -p tcp -m comment --comment "default/htt