ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
现在我们来学习使用 YAML 文件创建服务。 在`/home/shiyanlou`目录下新建`tomcat-deployment.yaml`,并向其中写入如下内容: ~~~yaml apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: selector: matchLabels: app: tomcat replicas: 2 template: metadata: labels: app: tomcat spec: containers: - name: tomcat image: tomcat ports: - containerPort: 8080 ~~~ 执行创建: ~~~bash $ kubectl create -f tomcat-deployment.yaml deployment.apps/myapp created ~~~ 查看新创建的 Pods: ~~~bash $ kubectl get pods NAME READY STATUS RESTARTS AGE myapp-69ff6fc7c6-q5vwk 1/1 Running 0 108s myapp-69ff6fc7c6-vwxm7 1/1 Running 0 108s ~~~ 在`/home/shiyanlou`目录下新建`myapp-svc.yaml`文件,并向其中写入如下代码。我们这里设置服务类型为 NodePort,集群内部服务的端口为 8081,对外提供服务的端口为 30001,并且 Pod 的端口为 8080: ~~~yaml apiVersion: v1 kind: Service metadata: name: myapp spec: type: NodePort # 指定服务类型为 NodePort ports: - port: 8081 # 指定集群内部 service 的端口 targetPort: 8080 # 指定 Pod 的端口 nodePort: 30001 # 指定外部连接的端口 selector: # 标签选择器,选择带有 app=tomcat 的 Pod app: tomcat ~~~ 执行创建: ~~~bash $ kubectl create -f myapp-svc.yaml service/myapp created ~~~ 查看服务详细信息: ~~~bash $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 82d # 可以发现新建的 myapp 服务,类型为 NodePort;PORT 部分,8081 为集群VIP端口,30001 为外部连接 Node 的端口 myapp NodePort 10.98.24.238 <none> 8081:30001/TCP 7s $ kubectl get pods -l app=tomcat -o yaml|grep podIP podIP: 10.244.3.3 podIP: 10.244.2.4 $ kubectl describe svc/myapp Name: myapp Namespace: default Labels: <none> Annotations: <none> Selector: app=tomcat Type: NodePort IP: 10.98.24.238 Port: <unset> 8081/TCP TargetPort: 8080/TCP NodePort: <unset> 30001/TCP Endpoints: 10.244.2.4:8080,10.244.3.3:8080 Session Affinity: None External Traffic Policy: Cluster Events: <none> ~~~ 我们先尝试集群内部访问: ~~~bash shiyanlou:~/ $ docker exec -it kube-master bash root@kube-master:/# curl 10.98.24.238:8081 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Apache Tomcat/8.5.47</title> <link href="favicon.ico" rel="icon" type="image/x-icon" /> <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" /> <link href="tomcat.css" rel="stylesheet" type="text/css" /> </head> ...... ~~~ 然后尝试在集群外部直接访问,打开 firefox 浏览器,输入地址:`10.192.0.2:30001`,结果如下图所示: ![](https://img.kancloud.cn/fc/29/fc2992fc0971b1729f6c65bea69e06c8_1189x863.png) 这就表示我们的服务真正可以成功访问啦。