(六)kubernetes部署应用service方式

前几章验证的是部署以及内部访问,但是事实上很多情况都需使用外部访问,比如部署nacos,数据库等等。我是在搭建prometheus监控时候遇到无法访问,固想起还有外部访问方式,今天就验证一下外部可访问的部署方式service。

service是k8s中的一个重要概念,主要是提供负载均衡和服务自动发现

因为Pod IP会随着Pod的重建产生变化,可以使用Service提供的ip

1:编辑yaml文件

[root@master00 md-order]# vim md-order-03.yaml


apiVersion: apps/v1                  # K8S对应的API版本
kind: Deployment                                # 对应的类型
metadata:
  name: caoqing-deployment-test
  #labels:
   # name: cqoqing-deployment-test01
spec:
  selector:
    matchLabels:
      app: caoqing-deployment-test
  replicas: 2                                   # 镜像副本数量
  template:
    metadata:
      labels:                                   # 容器的标签 可和service关联
        app: caoqing-deployment-test
    spec:
      containers:
        - name: md-order9006                          # 容器名和镜像
          image: registry.cn-beijing.aliyuncs.com/fastdfcsx/md-order-test:2022-10-xx-xx-33-54
          imagePullPolicy: Always
          ports:
          - name: md-order9006
            containerPort: 9006
            protocol: TCP

 2:创建pod

[root@master00 md-order]# kubectl create -f md-order-03.yaml 
deployment.apps/caoqing-deployment-test created
[root@master00 md-order]# 
[root@master00 md-order]# 
[root@master00 md-order]# kubectl get pods -o wide
NAME                                       READY   STATUS    RESTARTS   AGE   IP               NODE       NOMINATED NODE   READINESS GATES
caoqing-deployment-test-689bbd9587-67f7n   1/1     Running   0          7s    10.111.112.135   master01   <none>           <none>
caoqing-deployment-test-689bbd9587-cthlp   1/1     Running   0          7s    10.100.59.203    master02   <none>           <none>

 3:创建service

[root@master00 md-order]# kubectl expose deploy caoqing-deployment-test --name=cq-service01 --type=ClusterIP --target-port=9006
service/cq-service01 exposed
[root@master00 md-order]# 
[root@master00 md-order]# 
[root@master00 md-order]# kubectl get service
NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
cq-service01   ClusterIP   10.101.187.154   <none>        9006/TCP   13s
kubernetes     ClusterIP   10.96.0.1        <none>        443/TCP    33d
[root@master00 md-order]# 
[root@master00 md-order]# 
[root@master00 md-order]# kubectl get service -o wide
NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE   SELECTOR
cq-service01   ClusterIP   10.101.187.154   <none>        9006/TCP   35s   app=caoqing-deployment-test
kubernetes     ClusterIP   10.96.0.1        <none>        443/TCP    33d   <none>

4:以上方式无法外部访问,我们可以外部访问方式 创建,讲type改为nodeport

[root@master00 md-order]# kubectl expose deploy caoqing-deployment-test --name=cq-service02 --type=NodePort --target-port=9006
service/cq-service02 exposed
[root@master00 md-order]# 

 4:查看该service详细内容,默认暴露31183端口

[root@master00 md-order]# kubectl get pods,service
NAME                                           READY   STATUS    RESTARTS   AGE
pod/caoqing-deployment-test-689bbd9587-blrcn   1/1     Running   0          4m36s
pod/caoqing-deployment-test-689bbd9587-wwc77   1/1     Running   0          4m36s

NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/cq-service01   ClusterIP   10.101.187.154   <none>        9006/TCP         2m27s
service/cq-service02   NodePort    10.107.171.238   <none>        9006:31183/TCP   26s
service/kubernetes     ClusterIP   10.96.0.1        <none>        443/TCP          33d

 5:验证端口是否可以访问

[root@master00 md-order]# curl 192.168.0.250:31183/doc.html   #拉取镜像开发swagger,可以直接访问,ip地址可以是集群内的任意一个ip

 

参考学习大神文章:链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于使用Kubernetes部署Java应用程序,可以按照以下步骤进行: 1. 创建Docker镜像:首先,你需要将Java应用程序打包到一个可执行的JAR文件中。然后,使用Dockerfile创建一个Docker镜像,该镜像将包含Java运行时环境和你的应用程序。 2. 配置Kubernetes集群:确保你有一个可用的Kubernetes集群。你可以使用云提供商(如AWS、GCP、Azure)的托管服务,或者在本地使用Minikube或Kind等工具创建一个本地集群。 3. 创建Kubernetes部署文件:在Kubernetes中,你需要创建一个Deployment对象来定义你的应用程序的部署配置。在Deployment对象中,你可以指定要使用Docker镜像、容器端口、资源限制等。 4. 应用部署使用kubectl命令将Deployment文件应用Kubernetes集群中。这将触发Kubernetes自动创建Pod并启动你的Java应用程序容器。 5. 暴露服务:如果你的应用程序需要从外部访问,则需要创建一个Service对象来暴露应用程序容器的网络端口。可以使用LoadBalancer、NodePort或ClusterIP等服务类型。 6. 监控和管理:使用Kubernetes提供的工具来监控和管理你的应用程序。例如,你可以使用Kubernetes DashboardPrometheus和Grafana等工具来监控资源使用情况和应用程序性能。 以上是一个基本的Kubernetes部署流程,具体的步骤和配置可能因你的应用程序和需求而有所不同。可以参考Kubernetes官方文档或其他相关资料,了解更多关于Kubernetes部署Java应用程序的信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值