• istio快速入门


    第一步:

    找到对应的版本

    第二步:

    执行yaml文件

    [root@VM-0-15-centos istio-1.5.9]# kubectl apply -f istio-1.5.9/install/kubernetes/istio-demo.yaml

    第三步

    等待pod都running,这里可能等待时间较长,因为要拉取镜像,如果有拉取镜像失败,可以尝试docker pull去拉取

    第四步:

    创建pod,这里要注意的是一个service关联了2个deployment,并且2个deployment内容并不一样,一个v1,一个v2

    [root@VM-0-15-centos ~]# cat flaskapp.yaml 
    apiVersion: v1
    kind: Service
    metadata:
      name: flaskapp
      labels:
        app: flaskapp
    spec:
      selector:
        app: flaskapp
      ports:
      - name: http
        port: 80
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: flaskapp-1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: flaskapp
      template:
        metadata: 
          labels:
            app: flaskapp
            version: v1
        spec:
          containers:
          - name: flaskapp
            image: dustise/flaskapp
            imagePullPolicy: IfNotPresent
            env:
            - name: version
              value: v1
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: flaskapp-2
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: flaskapp
      template:
        metadata:
          labels:
            app: flaskapp
            version: v2
        spec:
          containers:
          - name: flaskapp
            image: dustise/flaskapp
            imagePullPolicy: IfNotPresent
            env:
            - name: version
              value: v2
    [root@VM-0-15-centos ~]# kubectl apply -f flaskapp.yaml 
    service/flaskapp created
    deployment.apps/flaskapp-1 created
    deployment.apps/flaskapp-2 created

    查看pod

     

     现在我们将istio注入到pod,可以看到istio已经注入到pod当中了

    部署客户端,如下:

    [root@VM-0-15-centos ~]# vim sleep.yaml
    kind: Service
    metadata:
      name: sleep
      labels:
        app: sleep
        version: v1
    spec:
      selector:
        app: sleep
        version: v1
      ports:
      - name: ssh
        port: 80
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sleep
    spec:
      selector:
        matchLabels:
          app: sleep
          version: v1
      replicas: 1
      template:
        metadata:
          labels:
            app: sleep
            version: v1
        spec:
          containers:
          - name: sleep
            image: dustise/sleep
            imagePullPolicy: IfNotPresent
    [root@VM-0-15-centos ~]# kubectl apply -f sleep.yaml 
    service/sleep created
    deployment.apps/sleep created

     验证服务,可以看到基本上是轮调

     接下来我们用istio来控制这2个服务的流量,我们定义一个名字为flaskapp的destinationrule,它利用Pod标签把flaskapp服务分成两个subset,分别为v1和v2

    [root@VM-0-15-centos ~]# cat flaskapp-destinationrule.yaml 
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: flaskapp
    spec:
      host: flaskapp
      subsets:
      - name: v1
        labels:
          version: v1
      - name: v2
        labels:
          version: v2
    [root@VM-0-15-centos ~]# kubectl apply -f flaskapp-destinationrule.yaml 
    destinationrule.networking.istio.io/flaskapp created

    接下来就需要为flaskapp服务创建默认规则,不论是否进行进一步的流量控制,我们都应该给它创建默认路由,以防止发生意料之外的访问结果

    如下:我们定义的规则为凡是访问flaskapp这个主机的都交给v2这台主机做相应

    [root@VM-0-15-centos ~]# vim flaskapp-default-vs-v2.yaml 
    kind: VirtualService
    metadata:
      name: flaskapp-default-v2
    spec:
      hosts:
      - flaskapp
      http:
      - route:
        - destination:
            host: flaskapp
            subset: v2
    [root@VM-0-15-centos ~]# kubectl apply -f flaskapp-default-vs-v2.yaml 
    virtualservice.networking.istio.io/flaskapp-default-v2 created

    再次验证

  • 相关阅读:
    关于cookie的一点知识
    一点简单的关于ASP.NET下载
    一个小小小问题
    复习linq
    拾遗一些关于存储过程
    一般处理程序(下)
    复习一下递归
    复习JS和jQuery
    一点关于Ajax和一个等待图标的显示
    C#开发BIMFACE系列14 服务端API之批量获取转换状态详情
  • 原文地址:https://www.cnblogs.com/fengzi7314/p/13536648.html
Copyright © 2020-2023  润新知