美文网首页Istio我爱编程
部署Kubernetes - Istio

部署Kubernetes - Istio

作者: 8411e9740257 | 来源:发表于2018-04-12 12:34 被阅读0次

    参考

    部署

    1. 安装

      curl -L https://git.io/getLatestIstio | sh -

      解压进入目录

      export PATH=$PWD/bin:$PATH

      安装Istio而不启用侧车间的相互TLS认证。为具有现有应用程序的群集,使用Istio辅助车的服务需要能够与其他非Istio Kubernetes服务以及使用活动性和准备就绪探测器,无头服务或StatefulSets的应用程序通信的应用程序选择此选项。

      kubectl apply -f install/kubernetes/istio.yaml

      安装Istio并启用侧柜之间的相互TLS认证。

      kubectl apply -f install/kubernetes/istio-auth.yaml

      这两个选项都会创建istio-system命名空间以及所需的RBAC权限,并部署Istio-Pilot,Istio-Mixer,Istio-Ingress和Istio-CA(证书颁发机构)。
      可选:如果您的群集的Kubernetes版本是1.9或更高,并且您希望启用自动代理注入,请安装sidecar injector webhook。 验证安装 请确保以下Kubernetes服务部署:istio-pilot,istio-mixer,istio-ingress。

      kubectl get svc -n istio-system

      NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                             AGE
      istio-ingress            LoadBalancer   10.104.133.203   <pending>     80:31411/TCP,443:31944/TCP                                          19h
      istio-mixer              ClusterIP      10.110.159.37    <none>        9091/TCP,15004/TCP,9093/TCP,9094/TCP,9102/TCP,9125/UDP,42422/TCP    1d
      istio-pilot              ClusterIP      10.109.170.9     <none>        15003/TCP,15005/TCP,15007/TCP,15010/TCP,8080/TCP,9093/TCP,443/TCP   1d
      istio-sidecar-injector   ClusterIP      10.109.227.123   <none>        443/TCP                                                             1h
      

      确保相应Kubernetes容器都运行起来:istio-pilot-、istio-mixer-、istio-ingress-、istio-ca-,和可选的istio-sidecar-injector-*。

      kubectl get pods -n istio-system

      NAME                                      READY     STATUS    RESTARTS   AGE
      istio-ca-75fb7dc8d5-6v27b                 1/1       Running   2          1d
      istio-ingress-7966684d69-xm966            1/1       Running   2          19h
      istio-mixer-566f68f5d6-wckqq              3/3       Running   6          1d
      istio-pilot-fd8fb6957-4c5hj               2/2       Running   4          1d
      istio-sidecar-injector-844b9d4f86-58nd9   1/1       Running   0          1h
      
    2. 安装 Istio sidecar

      Pod Spec 中需满足的条件

      为了成为 Service Mesh 中的一部分,kubernetes 集群中的每个 Pod 都必须满足如下条件:

      1. Service 关联:每个 pod 都必须只属于某一个 Kubernetes Service (当前不支持一个 pod 同时属于多个 service)。
      2. 命名的端口:Service 的端口必须命名。端口的名字必须遵循如下格式 <protocol>[-<suffix>],可以是httphttp2grpcmongo、 或者 redis 作为 <protocol> ,这样才能使用 Istio 的路由功能。例如name: http2-fooname: http 都是有效的端口名称,而 name: http2foo 不是。如果端口的名称是不可识别的前缀或者未命名,那么该端口上的流量就会作为普通的 TCP 流量来处理(除非使用 Protocol: UDP 明确声明使用 UDP 端口)。
      3. 带有 app label 的 Deployment:我们建议 kubernetes 的Deploymenet 资源的配置文件中为 Pod 明确指定 applabel。每个 Deployment 的配置中都需要有个与其他 Deployment 不同的含有意义的 app label。app label 用于在分布式追踪中添加上下文信息。
      4. Mesh 中的每个 pod 里都有一个 Sidecar:最后,Mesh 中的每个 pod 都必须运行与 Istio 兼容的 sidecar。以下部分介绍了将 sidecar 注入到 pod 中的两种方法:使用istioctl 命令行工具手动注入,或者使用 Istio Initializer 自动注入。注意 sidecar 不涉及到流量,因为它们与容器位于同一个 pod 中。

      a) 生成证书

      ./install/kubernetes/webhook-create-signed-cert.sh
      --service istio-sidecar-injector
      --namespace istio-system
      --secret sidecar-injector-certs

      b) 安装 sidecar 注入的 configmap

      kubectl apply -f install/kubernetes/istio-sidecar-injector-configmap-release.yaml

      c) 设置安装 yaml 中 webhook 的 caBundle,以便 api-server能够用来调用 webhook

      cat install/kubernetes/istio-sidecar-injector.yaml |
      ./install/kubernetes/webhook-patch-ca-bundle.sh >
      install/kubernetes/istio-sidecar-injector-with-ca-bundle.yaml

      d) 安装 sidecar 注册器 webhook

      kubectl apply -f install/kubernetes/istio-sidecar-injector-with-ca-bundle.yaml

    1. 部署应用

      前置条件

      kubernetes 1.9 的集群需要启动 admissionregistration.k8s.io/v1beta1

      kubectl api-versions | grep admissionregistration.k8s.io/v1beta1

      admissionregistration.k8s.io/v1beta1
      

      如果您启动了Istio-sidecar-injector,如上所示,您可以直接使用应用程序部署应用程序kubectl create。

      kubectl get namespace -L istio-injection

      NAME           STATUS    AGE       ISTIO-INJECTION
      default        Active    4d        enabled
      istio-system   Active    1d        
      kube-public    Active    4d        
      kube-system    Active    4d    
      

      Istio Sidecar注入器会自动将Envoy容器注入到您的应用程序窗格中,假设运行在标有名称空间的名称空间中istio-injection=enabled

      kubectl label namespace <namespace> istio-injection=enabled

      kubectl create -n <namspace> -f <your-app-spec>.yaml

      如果您没有安装Istio-sidecar-injector,则在部署它们之前,必须使用istioctl kube-inject将Envoy容器手动注入应用程序窗格中:

      kubectl create -f <(istioctl kube-inject -f <your-app-spec>.yaml)

    2. 卸载

      如果您启用Istio-sidecar-injector,请将其卸载:

      kubectl delete -f install/kubernetes/istio-sidecar-injector-with-ca-bundle.yaml

      a)如果您在禁用相互TLS身份验证的情况下安装了Istio:

      kubectl delete -f install/kubernetes/istio.yaml

      b)如果您在启用相互TLS身份验证的情况下安装了Istio:

      kubectl delete -f install/kubernetes/istio-auth.yaml

    相关文章

      网友评论

        本文标题:部署Kubernetes - Istio

        本文链接:https://www.haomeiwen.com/subject/fwexkftx.html