可外部访问的Kubernetes容器
转载
上次的实验中创建的Nginx容器只能使用内网IP访问,外网是无法访问的,这并不是我们想要的。一个服务要能够通过外网IP地址访问到内网里的容器服务那才是最终的结果;今天继续通过Kubernetes来创建容器并通过宿主机IP地址加端口方法访问到Nginx服务;
创建一个nging_service.yaml配置文件
1. apiVersion: v1
2. kind: Service
3. metadata:
4. name: nginx-service
5. spec:
6. externalIPs:
7. - 10.0.10.135
8. ports:
9. - port: 8000
10. targetPort: 80
11. protocol: TCP
12. selector:
13. app: web01
说明:上面配置中定义一个service服务,命令为nginx-service,定义对外的IP地址为:本机的10.0.10.135,把宿主机上的8000端口映射到容器80端口上,走和协议为TCP,选择器选择所有属于app=web01分组的容器,这个对于集群就很方便了;
接下来再定义一个nginx_pod.yaml配置文件:
1. apiVersion: v1
2. kind: ReplicationController
3. metadata:
4. name: nginx
5. spec:
6. replicas: 1
7. selector:
8. app: web01
9. template:
10. metadata:
11. name: nginx
12. labels:
13. app: web01
14. spec:
15. containers:
16. - name: nginx
17. image: reg.docker.tb/harbor/nginx:latest
18. ports:
19. - containerPort: 80
说明:这里跟之前的Pod是有区别的,这里定义的类型为ReplicationController 复制控制,并定义app名为web01;
执行创建命令:
1. [root@node5 ~]# kubectl create -f nginx_service.yaml
2. service "nginx-service" created
3. [root@node5 ~]# kubectl create -f nginx_pod.yaml
4. replicationcontroller "nginx" created
5. [root@node5 ~]# kubectl get service
6. NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
7. kubernetes 10.254.0.1 <none> 443/TCP 2d
8. nginx-service 10.254.182.210 10.0.10.135 8000/TCP 11s
9. [root@node5 ~]# kubectl get pods
10. NAME READY STATUS RESTARTS AGE
11. nginx-27hgx 1/1 Running 0 10s
看到这个nginx-service有一个EXTERNAL-IP为10.0.10.135 这就是对外的IP地址;打开浏览器访问10.0.10.135:8000即可访问到Nginx容器了;
这样就实现了可供外网访问的一个容器实验了。