封尘网

让学习成为一种习惯!

可外部访问的Kubernetes容器

上次的实验中创建的Nginx容器只能使用内网IP访问,外网是无法访问的,这并不是我们想要的。一个服务要能够通过外网IP地址访问到内网里的容器服务那才是最终的结果;今天继续通过Kubernetes来创建容器并通过宿主机IP地址加端口方法访问到Nginx服务;

创建一个nging_service.yaml配置文件

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  externalIPs:
    - 10.0.10.135
  ports:
  - port: 8000
    targetPort: 80
    protocol: TCP
  selector:
    app: web01

说明:上面配置中定义一个service服务,命令为nginx-service,定义对外的IP地址为:本机的10.0.10.135,把宿主机上的8000端口映射到容器80端口上,走和协议为TCP,选择器选择所有属于app=web01分组的容器,这个对于集群就很方便了;

接下来再定义一个nginx_pod.yaml配置文件:


apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    app: web01
  template:
    metadata:
      name: nginx
      labels:
        app: web01
    spec:
      containers:
      - name: nginx
        image: reg.docker.tb/harbor/nginx:latest
        ports:
        - containerPort: 80

说明:这里跟之前的Pod是有区别的,这里定义的类型为ReplicationController 复制控制,并定义app名为web01;

执行创建命令:

[root@node5 ~]# kubectl create -f nginx_service.yaml
service "nginx-service" created
[root@node5 ~]# kubectl create -f nginx_pod.yaml
replicationcontroller "nginx" created
[root@node5 ~]# kubectl get service
NAME            CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
kubernetes      10.254.0.1       <none>        443/TCP    2d
nginx-service   10.254.182.210   10.0.10.135   8000/TCP   11s
[root@node5 ~]# kubectl get pods
NAME          READY     STATUS    RESTARTS   AGE
nginx-27hgx   1/1       Running   0          10s

看到这个nginx-service有一个EXTERNAL-IP为10.0.10.135 这就是对外的IP地址;打开浏览器访问10.0.10.135:8000即可访问到Nginx容器了;

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

提醒:本文最后更新于 2365 天前,文中所描述的信息可能已发生改变,请谨慎使用。