kubernetes istio的快速安装和使用例子

安装

[[email protected] ~]# wget https://github.com/istio/istio/releases/download/1.1.5/istio-1.1.5-linux.tar.gz
[[email protected] ~]# tar -zxvf istio-1.1.5-linux.tar.gz
[[email protected] ~]# cd istio-1.1.5

安装所有Istio自定义资源定义

[[email protected] istio-1.1.5]# for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done
[[email protected] istio-1.1.5]# kubectl apply -f install/kubernetes/istio-demo.yaml
[[email protected] istio-1.1.5]# kubectl  get svc -n istio-system
NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                                                                                                      AGE
grafana                  ClusterIP      10.105.112.216   <none>        3000/TCP                                                                                                                                     19s
istio-citadel            ClusterIP      10.104.129.126   <none>        8060/TCP,15014/TCP                                                                                                                           19s
istio-egressgateway      ClusterIP      10.96.68.169     <none>        80/TCP,443/TCP,15443/TCP                                                                                                                     19s
istio-galley             ClusterIP      10.101.195.214   <none>        443/TCP,15014/TCP,9901/TCP                                                                                                                   19s
istio-ingressgateway     LoadBalancer   10.102.30.240    <pending>     15020:31109/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:32481/TCP,15030:30697/TCP,15031:32508/TCP,15032:31496/TCP,15443:30329/TCP   19s
istio-pilot              ClusterIP      10.105.128.66    <none>        15010/TCP,15011/TCP,8080/TCP,15014/TCP                                                                                                       19s
istio-policy             ClusterIP      10.97.159.124    <none>        9091/TCP,15004/TCP,15014/TCP                                                                                                                 19s
istio-sidecar-injector   ClusterIP      10.99.226.143    <none>        443/TCP                                                                                                                                      19s
istio-telemetry          ClusterIP      10.109.97.180    <none>        9091/TCP,15004/TCP,15014/TCP,42422/TCP                                                                                                       19s
jaeger-agent             ClusterIP      None             <none>        5775/UDP,6831/UDP,6832/UDP                                                                                                                   19s
jaeger-collector         ClusterIP      10.96.209.196    <none>        14267/TCP,14268/TCP                                                                                                                          19s
jaeger-query             ClusterIP      10.110.178.26    <none>        16686/TCP                                                                                                                                    19s
kiali                    ClusterIP      10.103.103.154   <none>        20001/TCP                                                                                                                                    19s
prometheus               ClusterIP      10.102.6.211     <none>        9090/TCP                                                                                                                                     19s
tracing                  ClusterIP      10.110.154.208   <none>        80/TCP                                                                                                                                       19s
zipkin                   ClusterIP      10.98.186.181    <none>        9411/TCP 

当前 EXTERNAL-IP 处于 pending 状态,我们目前的环境并没有可用于Istio Ingress Gateway外部的负载均衡器,为了使得可以从外部访问,通过修改 istio-ingressgateway 这个Service的externalIps,以为当前Kubernetes集群的kube-proxy启用了ipvs,所以这个指定一个VIP 10.0.1.111作为externalIp。也可以把externalIp改为clusterIP

[[email protected] istio-1.1.5]# kubectl edit svc istio-ingressgateway -n istio-system

......
spec:
  externalIPs:
  - 10.0.1.111

......
//再次查看
[[email protected] istio-1.1.5]# kubectl get svc istio-ingressgateway -n istio-system
NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                                                                                                      AGE
istio-ingressgateway     LoadBalancer   10.102.30.240    10.0.1.111    15020:31109/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:32481/TCP,15030:30697/TCP,15031:32508/TCP,15032:31496/TCP,15443:30329/TCP   7m54s
[[email protected] istio-1.1.5]# kubectl label namespace default istio-injection=enabled //为需要自动注入sidecar的namespace打label
[[email protected] istio-1.1.5]# kubectl get namespace -L istio-system
NAME              STATUS   AGE   ISTIO-SYSTEM
default           Active   13d   enabled
istio-system      Active   22m
kube-node-lease   Active   13d
kube-public       Active   13d
kube-system       Active   13d  

部署案例

[[email protected] istio-1.1.5]# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
service/details created
deployment.extensions/details-v1 created
service/ratings created
deployment.extensions/ratings-v1 created
service/reviews created
deployment.extensions/reviews-v1 created
deployment.extensions/reviews-v2 created
deployment.extensions/reviews-v3 created
service/productpage created
deployment.extensions/productpage-v1 created
[[email protected] istio-1.1.5]# kubectl get svc
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
details        ClusterIP      10.106.209.133   <none>        9080/TCP       84s
kubernetes     ClusterIP      10.96.0.1        <none>        443/TCP        13d
productpage    ClusterIP      10.96.27.39      <none>        9080/TCP       84s
ratings        ClusterIP      10.109.45.236    <none>        9080/TCP       84s
reviews        ClusterIP      10.102.249.50    <none>        9080/TCP       84s
[[email protected] istio-1.1.5]# kubectl get pods
NAME                             READY   STATUS    RESTARTS   AGE
details-v1-79c6548b59-d8448      1/1     Running   0          3m1s
productpage-v1-95d579cd5-62s8v   1/1     Running   0          3m1s
ratings-v1-7665579b75-jjvv7      1/1     Running   0          3m1s
reviews-v1-67446f7d9b-hrhbj      1/1     Running   0          3m1s
reviews-v2-6bc7b4f678-vhjwh      1/1     Running   0          3m1s
reviews-v3-59b5b6948-sxxhj       1/1     Running   0          3m1s
[[email protected] istio-1.1.5]# kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath=‘{.items[0].metadata.name}‘) -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
<title>Simple Bookstore App</title>

使用Istio Gateway接入集群外部流量
现在Bookinfo服务已启动并运行,您需要从Kubernetes集群外部访问应用程序,例如,从浏览器访问。一个Istio网关 用于此目的。

1.为应用程序定义入口网关:

[[email protected] istio-1.1.5]# kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml //此处不能楼,不然http://NodeIP:31380/productpage访问不了
[[email protected] istio-1.1.5]# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
[[email protected] istio-1.1.5]# kubectl get gateway
NAME               AGE
bookinfo-gateway   22s
[[email protected] istio-1.1.5]# kubectl get gateway bookinfo-gateway -o yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.istio.io/v1alpha3","kind":"Gateway","metadata":{"annotations":{},"name":"bookinfo-gateway","namespace":"default"},"spec":{"selector":{"istio":"ingressgateway"},"servers":[{"hosts":["istio.haipai.com"],"port":{"name":"http","number":80,"protocol":"HTTP"}}]}}
  creationTimestamp: "2019-05-24T09:03:51Z"
  generation: 1
  name: bookinfo-gateway
  namespace: default
  resourceVersion: "1649570"
  selfLink: /apis/networking.istio.io/v1alpha3/namespaces/default/gateways/bookinfo-gateway
  uid: d93469d6-7e02-11e9-9cfc-fa163ec472b0
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - istio.haipai.com
    port:
      name: http
      number: 80
      protocol: HTTP

[[email protected] istio-1.1.5]# kubectl get VirtualService -o wide
NAME       GATEWAYS             HOSTS   AGE
bookinfo   [bookinfo-gateway]   [*]     4m51s

浏览器访问http://NodeIP:31380/productpage
然后创建v3的再去浏览器刷新几次就会发现有红有黑

[[email protected] istio-1.1.5]# kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml
virtualservice.networking.istio.io/reviews created

我们再建一个virtual-service-reviews-jason-v2-v3.yaml此service不登陆的话默认转发到v3(红色),登陆就转发到v2(黑色)

[[email protected] istio-1.1.5]# ls samples/bookinfo/networking/
bookinfo-gateway.yaml            virtual-service-all-v1.yaml              virtual-service-reviews-80-20.yaml
certmanager-gateway.yaml         virtual-service-details-v2.yaml          virtual-service-reviews-90-10.yaml
destination-rule-all-mtls.yaml   virtual-service-ratings-db.yaml          virtual-service-reviews-jason-v2-v3.yaml
destination-rule-all.yaml        virtual-service-ratings-mysql-vm.yaml    virtual-service-reviews-test-v2.yaml
destination-rule-reviews.yaml    virtual-service-ratings-mysql.yaml       virtual-service-reviews-v2-v3.yaml
egress-rule-google-apis.yaml     virtual-service-ratings-test-abort.yaml  virtual-service-reviews-v3.yaml
fault-injection-details-v1.yaml  virtual-service-ratings-test-delay.yaml
ROUTING_RULE_MIGRATION.md        virtual-service-reviews-50-v3.yaml
[[email protected] istio-1.1.5]# kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-jason-v2-v3.yaml
virtualservice.networking.istio.io/reviews configured

//此时不登陆刷新都是红色,登陆用户jason,密码jason刷新都是黑色

原文地址:https://www.cnblogs.com/linyouyi/p/10920439.html

时间: 2024-08-27 11:32:15

kubernetes istio的快速安装和使用例子的相关文章

kubernetes之Kubeadm快速安装v1.12.0版

通过Kubeadm只需几条命令即起一个单机版kubernetes集群系统,而后快速上手k8s.在kubeadm中,需手动安装Docker和kubeket服务,Docker运行容器引擎,kubelet是启动Pod的核心组件,每一个节点都安装好kubelet和Docker,那么运行容器和Pod的环境就准备好了,在此基础之上,使用Kubeadm工具自动配置kubelet并启动kubelet服务,将Master所有组件和Node上剩余的kube-proxy组件都运行为Pod,托管在k8s之上. 服务器规

k8s Kubernetes v1.10 单节点 kubeadm 快速安装

k8s Kubernetes v1.10 单节点 kubeadm 快速安装 # Master 单节点快速安装 # 傻瓜式安装,只为快速部署测试环境 #测试环境centos 7.4 #ubuntu环境应该也可以,没测验证过 #1 初始化环境 curl -s http://elven.vip/ks/k8s/oneinstall/0.set.sh |bash #2 下载镜像,安装kubeadm工具 curl http://elven.vip/ks/k8s/oneinstall/1.download.s

traefik 结合 docker-compose 的快速安装及使用

traefik 介绍 traefik 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理.负载均衡工具. 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file-) 来自动化.动态的应用它的配置文件设置. 特性一览 它非常快 无需安装其他依赖,通过 Go 语言编写的单一可执行文件 支持 Rest API 多种后台支持:Docker, Swarm

Icinga快速安装与配置

Icinga快速安装与配置/* body */body { margin: 20px; padding: 0; font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Helvetica, Arial, sans-serif; font-size: 0.72em; color: #262625; /*background: #EFEFEF;*/ background: #FFFFFF; font-f

官网 Icinga快速安装与配置

Icinga快速安装与配置 1.1. 绪论 1.2. 前提条件 1.3. 安装软件包 1.4. 创建帐户信息 1.5. 编译和安装Icinga(包括IDOUtils) 1.5.1. 编译和安装 1.6. 定制配置 1.6.1. 启用idomod event broker 模块 1.7. 数据库创建和IDOUtils 1.8. 配置经典的Web界面 1.9. 编译和安装Icing插件 2.0. 调整SELinux的设置 2.1. 启动IDOUtils和Icinga 2.1.1. 配置Icinga开

linux环境快速安装python3

之前在linux上安装python3的时候,为了让不影响linux环境原有的python2的环境,选择的方法都是下载对应的linux环境的python包,不过 这里需要注意的是,不要更改linux默认输入python 进入python2的方法,自己安装python3的时候做软链接的时候要做成python3,否则系统的很多工具依赖于python2, 而他们使用的是python2 但是编译安装还是非常慢的,推荐下面一种快速的方法 快速安装python3 这里以centos 为例子,先执行: yum

15分钟在阿里云Kubernetes服务上快速建立Jenkins X Platform并运用GitOps管理应用发布

本文主要介绍如何在阿里云容器服务Kubernetes上快速安装部署Jenkins X Platform并结合demo实践演示GitOps的操作流程. 注意:本文中使用的jx工具.cloud-environments等做过改造用以适配阿里云Kubernetes容器服务,并未在自建Kubernetes集群中做过验证. 先决条件:首先,需要在 阿里云容器服务控制台 创建一个Kubernetes集群,本次实践使用的环境信息如下:master1 192.168.0.119master2 192.168.0

kubernetes系列03—kubeadm安装部署K8S集群

1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm 安装kubernetes(本文演示的就是此方法) 优点:你只要安装kubeadm即可:kubeadm会帮你自动部署安装K8S集群:如:初始化K8S集群.配置各个插件的证书认证.部署集群网络等.安装简易. 缺点:不是自己一步一步安装,可能对K8S的理解不会那么深:并且有那一部分有问题,自己不好修正. 1.3.2 方法2:二进制安装部署k

Mirth Connect 第一章 快速安装

前言:本人会陆续发表相关章节,有需要的人可以耐心等待,总章节供21章,会依次发布,本人发布的文章,均是实验成功的.本人水平有限,如有错误,请及时指出,在此表示感谢,希望关注Mirth Connect.第一章 快速安装 本章介绍了Mirth Connect3.4的基本安装过程,所有的例子都是基于windows操作系统的.安装前请确认满足以下三方面的要求: 1. JRE1.7版本以上(Mirth Connect3.5要求JRE1.8了),一般的情况JDK和JRE都要安装且版本必须一致,否则会导致Se