• k8s集群安装v1.20.9后-2-改造部署自己的服务k8sApp,增加istio


    1.环境准备:

    K8s集群,已经实现了k8s-app小例子,可以正常访问。(已包含docker)
    在此基础上对项目进行改进,实现istio流量切换。

    2.安装部署istio

    2.1 安装go

    官网下载go和istio的安装包,上传到k8s集群虚拟机上(三个机器都安装)

    [root@node1 ~]# cd /root/Public/istio
    [root@master istio]# ls
    go1.20.6.linux-amd64.tar.gz  istio-1.4.5.tar.gz
    [root@master istio]# tar -C /usr/local -xzf go1.20.6.linux-amd64.tar.gz 
    [root@master istio]# vi /etc/profile  #设置PATH和GOPATH
    export PATH=$PATH:/usr/local/go/bin
    export GOPATH=$HOME/go
    $ source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    验证安装是否成功:
    在刚才设置的GOPATH目录下创建一个级联目录src/hello(完成的目录应该是$HOME/go/src/hello,或者读者自己设置的目录),在这个目录下新建一个文件 hello.go

    [root@master hello]# pwd
    /root/go/src/hello
    [root@master hello]# touch hello.go
    [root@master hello]# vi hello.go 
    package main
    import "fmt"
    func main() {
       
        fmt.Println("hello, go")
    }
    [root@master hello]# go run hello.go
    hello, go
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    如果能在终端中看到打印出了“hello, go”,则说明Go语言安装成功了。

    2.2 安装istio

    [root@node1 hello]# cd /root/Public/istio
    [root@master istio]# ls
    go1.20.6.linux-amd64.tar.gz  istio-1.6.8-linux-amd64.tar.gz
    [root@master istio]# tar -zxvf istio-1.6.8-linux-amd64.tar.gz
    [root@master istio]# mv istio-1.6.8 /usr/local/istio
    [root@master istio]# export PATH=$PATH:/usr/local/istio/bin
    [root@master istio]# source /etc/profile
    
    ## 验证安装是否成功:
    [root@master istio]# istioctl version
    no running Istio pods in "istio-system"
    1.6.8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.3 部署istio

    [root@master istio]# istioctl manifest apply --set profile=demo
    ✔ Istio core installed                                                                                                                                                                             
    ✔ Istiod installed                                                                                                                                                                                 
    ✔ Ingress gateways installed                                                                                                                                                                       
    ✔ Egress gateways installed                                                                                                                                                                        
    ✔ Addons installed                                                                                                                                                                                 
    ✔ Installation complete                                                                                                                                                                            [root@master istio]# kubectl get pod -n istio-system
    NAME                                    READY   STATUS    RESTARTS   AGE
    grafana-7647cf9c74-864vk                1/1     Running   0          6m42s
    istio-egressgateway-7764d599cb-s66zt    1/1     Running   0          6m43s
    istio-ingressgateway-56cf5fd57c-smfc7   1/1     Running   0          6m43s
    istio-tracing-7fcc6f5848-8tfxl          1/1     Running   0          6m42s
    istiod-7567dbfd7b-c7pgz                 1/1     Running   0          9m28s
    kiali-7f575d9c4c-jd2fx                  1/1     Running   0          6m42s
    prometheus-6c7bcc84bc-l279c             2/2     Running   0          6m42s
    [root@master istio]# kubectl get namespace -L istio-injection
    NAME              STATUS   AGE     ISTIO-INJECTION
    default           Active   24h     
    ingress-nginx     Active   23h     
    istio-system      Active   9m43s   disabled
    k8s-demo          Active   24h     
    kube-node-lease   Active   24h     
    kube-public       Active   24h     
    kube-system       Active   24h  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    3.k8s-app改造成k8s-istio-app,做一个istio流量切换小例子

    3.1 代码新增接口方便查询k8s集群中istio的/app/info接口

    这样写是由于k8s的ingress gateway我们配置的直接走的k8s的service,所以istio得流量切换这样调用/app/info不起作用,写成feign调用配置为istio配置可以看到切换流量的效果。若想看差异,也可以将此地址配置为k8s的svc地址。例如:http://k8s-istio-app.k8s-istio-demo.svc:80
    接口hello
    此接口通过feign查询集群中/app/info接口,通过istio(若想通过k8s的svc也可切换地址,很方便)
    feign地址属性
    此地址配置为istio:
    http://istio-ingressgateway.istio-system.svc:8080
    更改为istio地址

    3.2 新建命名空间

    [root@master ~]# kc create ns k8s-istio-demo
    namespace/k8s-istio-demo created
    
    • 1
    • 2

    3.3 给此命名空间开启自动注入sidecar(istio)

    
                    
  • 相关阅读:
    C#神器"BlockingCollection"类实现C#神仙操作
    react 手机端 rc-table列隐藏(根据相关条件是否隐藏)、实现图片上传操作
    npm安装包卡住问题
    Python中Write和Writelines有什么区别?
    基于SpringBoot的读书笔记共享平台
    redis运维(十)列表
    Linux多线程(线程同步与条件变量)
    计算机18个专业方向
    IDEA 03 (动态sql和分页)
    Linux设置禁止SSH空密码登录
  • 原文地址:https://blog.csdn.net/cc907566076/article/details/133315580