• 编写petclinic-service.yml

    1. apiVersion: v1
    2. kind: Service
    3. metadata:
    4. name: petclinic
    5. spec:
    6. ports:
    7. - name: http
    8. port: 8080
    9. targetPort: 8080
    10. nodePort: 31080
    11. selector:
    12. app: petclinic
    13. version: v2 #添加指定labels的版本
    14. type: NodePort
  • 编写petclinic-pod-v1.yml

    apiVersion: v1
    kind: Pod
    metadata:
    name: petclinic-v1
    labels: 
      app: petclinic
      version: v1 #指定selector版本
    spec:
    containers:
      - name: petclinic-v1
        image: xushencong/petclinic:v1
    
  • 编写petclinic-pod-v2.yml

    apiVersion: v1
    kind: Pod
    metadata:
    name: petclinic-v2
    labels: 
      app: petclinic
      version: v2 #指定selector版本
    spec:
    containers:
      - name: petclinic-v2
        image: xushencong/petclinic:v2
    

    ```shell

    部署

    [~/docker/pod-in-action/03]$ kubectl apply -f . pod/petclinic-v1 created pod/petclinic-v2 created service/petclinic created

    查看运行状态

    [~/docker/pod-in-action/03]$ kubectl get all NAME READY STATUS RESTARTS AGE pod/petclinic-v1 1/1 Running 0 15s pod/petclinic-v2 1/1 Running 0 15s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 443/TCP 26m service/petclinic NodePort 10.98.144.166 8080:31080/TCP 15s

查看详细

[~/docker/pod-in-action/03]$ kubectl describe svc petclinic Name: petclinic Namespace: default Labels: Annotations: Selector: app=petclinic,version=v1 #指定版本 Type: NodePort IP Family Policy: SingleStack IP Families: IPv4 IP: 10.98.144.166 IPs: 10.98.144.166 Port: http 8080/TCP TargetPort: 8080/TCP NodePort: http 31080/TCP Endpoints: 172.17.0.6:8080 Session Affinity: None External Traffic Policy: Cluster Events:

启动minikube

[~/docker/pod-in-action/03]$ minikube service petclinic |—————-|—————-|——————-|—————————————-| | NAMESPACE | NAME | TARGET PORT | URL | |—————-|—————-|——————-|—————————————-| | default | petclinic | http/8080 | http://192.168.49.2:31080 | |—————-|—————-|——————-|—————————————-| 🏃 Starting tunnel for service petclinic. |—————-|—————-|——————-|————————————| | NAMESPACE | NAME | TARGET PORT | URL | |—————-|—————-|——————-|————————————| | default | petclinic | | http://127.0.0.1:50745 | |—————-|—————-|——————-|————————————|

修改petclinic-service.yml指定版本,部署即可实现蓝绿发布

```