service 控制器案例(demo)
- 服务发现:
基于标签管理器关联后端的Pod列表。
- 负载均衡:
将用户请求转发给不同的Pod以均衡流量。
使用rc控制器部署3个副本,并使用svc的10.200.100.100:99端口进行服务的访问;
(1)不允许制作一个镜像,要求访问首页文件时出现以下信息; <所在节点 ---> Pod名称 ---> Pod的IP地址> 举个例子:
解题思路: - 向容器传递环境变量:
- 将这个写过写入到网站根目录即可: echo &quot;&lt;${baimei_POD_NAMENAME} ---&gt; ${baimei_POD_NAME} ---&gt; ${baimei_POD_IP}&gt;&quot; &gt; /usr/share/nginx/html/index.html
(2)使用rc控制器部署3个副本,并使用svc的10.200.100.100:99端口进行服务的访问;
参考案例:
(1)编写资源清单
cat 01-rc-svc-initContainers.yaml
apiVersion: v1 kind: Service metadata: name: myweb spec: # 指定service的IP地址 clusterIP: 10.200.100.100 # 基于标签选择器关联Pod selector: school: baimei # 配置端口映射 ports: # 指定Service服务本身的端口号 - port: 99 # 后端Pod提供服务的端口号 targetPort: 80
apiVersion: v1 kind: ReplicationController metadata: name: baimei-rc-web spec: replicas: 3 template: metadata: labels: school: baimei class: dashu spec: volumes: - name: data emptyDir: {} initContainers: - name: init image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine command: - "/bin/sh" - "-c" - "echo "<h1>${baimei_POD_NAMENAME} ---> ${baimei_POD_NAME} ---> ${baimei_POD_IP}</h1>" > /data/index.html" env: - name: baimei_POD_NAMENAME valueFrom: fieldRef: fieldPath: "spec.nodeName" - name: baimei_POD_NAME valueFrom: fieldRef: fieldPath: "metadata.name" - name: baimei_POD_IP valueFrom: fieldRef: fieldPath: "status.podIP" volumeMounts: - name: data mountPath: /data containers: - name: web image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine volumeMounts: - name: data mountPath: /usr/share/nginx/html
(2)创建资源
kubectl apply -f 01-rc-svc-initContainers.yaml
kubectl get svc,pods
(3)查看资源
for i in `seq 30`;do curl -s 10.200.100.100:99;done | sort | uniq -c