可外部访问的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容器了;

可外部访问的Kubernetes容器_第1张图片

这样就实现了可供外网访问的一个容器实验了。

你可能感兴趣的:(kubernetes)