NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
我们先创建一个名为 webapp 的 Deployment,它可以创建两个 Nginx Pod 副本,并且指定容器提供服务的端口号为 80 端口。 在`/home/shiyanlou`目录下新建`nginx-deployment.yaml`文件,并向其中写入如下内容: ~~~yaml apiVersion: apps/v1 kind: Deployment metadata: name: myweb spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 ~~~ 执行创建: ~~~bash $ kubectl create -f nginx-deployment.yaml deployment.apps/myweb created ~~~ 查看新创建的 Pods: ~~~bash $ kubectl get pods NAME READY STATUS RESTARTS AGE myweb-5754944d6c-2dfft 1/1 Running 0 18s myweb-5754944d6c-7xr97 1/1 Running 0 18s ~~~ 可以使用命令`kubectl expose`创建服务,该命令主要用于将一个已经存在的 Pod、RC、Service、或是 Deployment 暴露为一个新的 Service。 具体的命令格式如下所示: ~~~bash kubectl expose (-f FILENAME|TYPE NAME|TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name][--name=name][--external-ip=external-ip-of-service][--type=type][flags] ~~~ 在我们环境中执行如下命令: ~~~bash $ kubectl expose deploy myweb service/myweb exposed ~~~ 直接使用命令创建,不指定额外参数的话,新建的 Service 使用与 deploy 相同的名称,端口也会直接使用 Pod 中定义的 containerPort。我们来查看创建好的服务: ~~~bash $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 81d myweb ClusterIP 10.106.77.234 <none> 80/TCP 52s ~~~ 查找新建的两个 Pod 的 IP 地址,然后查看 myweb 服务的详细信息: ~~~bash $ kubectl get pods -l app=nginx -o yaml|grep podIP podIP: 10.244.3.4 podIP: 10.244.2.5 $ kubectl describe svc/myweb Name: myweb Namespace: default Labels: <none> Annotations: <none> Selector: app=nginx Type: ClusterIP IP: 10.106.77.234 Port: <unset> 80/TCP TargetPort: 80/TCP Endpoints: 10.244.2.5:80,10.244.3.4:80 # 重点关注 Endpoints,可以看到它记录了符合要求的 Pods 在集群内部的 IP 地址和端口号 Session Affinity: None Events: <none> ~~~ 现在进入集群内部,测试一下这个`ClusterIP:Port`(即:`10.106.77.234:80`) 是否能够访问: ~~~bash shiyanlou:~/ $ docker exec -it kube-master bash root@kube-master:/# curl 10.106.77.234:80 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> root@kube-master:/# ~~~ 可以看到在通过 ClusterIP 类型的 Service 已经可以成功实现集群内部的互相访问。