BHOL404 - k8s应用开发部署 - 使用Service对外提供服务

在这几节实验中,我们将完成我们的 Hello Boathouse 应用的k8s部署过程,其中会涉及到一下k8s中的对象

  • Pod
  • Deployment
    • Service
  • Secret
  • Namespace

这些内容基本上覆盖了我们k8s集群进行应用开发部署的主要对象。

01 - 实验准备

刚才我们都在使用kubectl命令的方式来完成service的创建,其实我们也可以使用yaml文件对service进行配置。

首先清理我们刚才用kubectl方式创建的service

  1. kubectl delete service hello-boathouse-service

02 - 使用 NodePort 方式

使用vscode创建 hello-boathouse-nodeport-service.yaml

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: hello-boathouse-service
  5. spec:
  6. ports:
  7. - port: 31001
  8. nodePort: 31001
  9. targetPort: nodejs-port
  10. protocol: TCP
  11. selector:
  12. app: hello-boathouse
  13. type: NodePort

使用以下命令提交部署

  1. kubectl apply -f kube-deploy/hello-boathouse-nodeport-service.yaml
  2. kubectl get services

03 - 使用 Load Balancer 方式

使用vscode创建 hello-boathouse-lb-service.yaml

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. labels:
  5. app: hello-boathouse
  6. name: hello-boathouse-lb-service
  7. spec:
  8. type: LoadBalancer
  9. ports:
  10. - port: 80
  11. targetPort: 3000
  12. selector:
  13. app: hello-boathouse
  14. status:
  15. loadBalancer: {}

如果使用minikube运行,需要先启动 tunnel 服务,tunnel服务是在minikube上模拟 Load Balancer 服务的扩展。另外打开一个terminal窗口运行:

  1. minikube tunnel

ps:该命令在window10上需要使用管理员权限执行

使用以下命令提交部署

  1. kubectl apply -f kube-deploy/hello-boathouse-lb-service.yaml
  2. kubectl get services

观察tunnel服务状态: BHOL404 - k8s应用开发部署 - 使用Service对外提供服务 - 图1

最后通过如下命令获取访问地址:

  1. minikube service hello-boathouse-lb-service --url