Istio —— kubernetes 1.10 部署 istio 1.0 service mesh 服务治理系统

一、背景

       实验环境:

       CentOS 7 操作系统

       kubernetes 1.10.4 HA 集群已经正常运行,搭建方法参考这里

       Helm v2.9.1 已部署至 K8S 集群 (注意 helm 安装时需要启用 --service-account 参数增加权限,原因

二、步骤解读

2.1  下载  Istio 1.0 安装包

        我这里下载的是 Linux 版本:【https://github.com/istio/istio/releases

        istio-1.0.0-linux.tar.gz

2.2   上传到 K8S Master 服务器,并解压压缩包

         Istio —— kubernetes 1.10 部署 istio 1.0 service mesh 服务治理系统

2.3   部署 Istio

helm template install/kubernetes/helm/istio --name istio --namespace istio-system  > istio.yaml

kubectl create namespace istio-system

kubectl create -f istio.yaml

        Istio —— kubernetes 1.10 部署 istio 1.0 service mesh 服务治理系统 

        正常情况下,Pod 运行情况应该如上图所示

2.4   部署其他相关组件 

        选项请参看官方说明 https://github.com/istio/istio/tree/master/install/kubernetes/helm/istio

helm template install/kubernetes/helm/istio --name istio --namespace istio-system  --set tracing.enabled=true  --set grafana.enabled=true > istio.yaml

kubectl apply -f istio.yaml

         Istio —— kubernetes 1.10 部署 istio 1.0 service mesh 服务治理系统

        当然了,我这里是重新生成了一遍 istio.yaml 部署文件,也可以在 2.3 步一步到位,直接连带其他组件一起部署

 2.5  验证部署是否正常

        默认服务只能在集群内部访问,我们需要把它暴露出来

        我的集群中部署了 Nginx Ingress,因此这里通过 Ingress 开放访问权,你也可以选择 NodePort 

        创建 ingress.yalm 文件

kind: Ingress
apiVersion: extensions/v1beta1
metadata: 
    name: ingress-grafana-dashboard
    namespace: istio-system
    annotations: 
      kubernetes.io/ingress.class: nginx
spec: 
    rules: 
      - host: grafana.ingress.ssdc.solutions
        http: 
          paths: 
            - path: /
              backend: 
                serviceName: grafana
                servicePort: 3000
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata: 
    name: ingress-jaeger-dashboard
    namespace: istio-system
    annotations: 
      kubernetes.io/ingress.class: nginx
spec: 
    rules: 
      - host: jaeger.ingress.ssdc.solutions
        http: 
          paths: 
            - path: /
              backend: 
                serviceName: jaeger-query
                servicePort: 16686

kubectl create -f ingress.yaml

        Istio —— kubernetes 1.10 部署 istio 1.0 service mesh 服务治理系统

        Istio —— kubernetes 1.10 部署 istio 1.0 service mesh 服务治理系统 

=====

补充说明:

Kubernetes 1.10 环境下,实现 sidecar 自动注入,需要设置 ApiServer 的启动参数 --admission-control

我的环境使用的如下配置(红色的是开启自动注入需要配置进去的):

NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,NodeRestriction