k8s安装istio

安装

istioctl operator init --hub pcr-sz.paic.com.cn/pks-istio --tag 1.5.5

所有操作在k8s的master节点上执行。

查看是否开启istio的自动注入

kubectl get namespace -L istio-injection

pib-core开启自动注入:

kubectl label namespace pib-core istio-injection=enabled

如下的policy是enabled,但和上面是什么关系?

kubectl -n istio-system get configmap istio-sidecar-injector -o jsonpath='{.data.config}' | grep policy:

查看istio的gateway

kubectl get gateway -n istio-system

查看gateway是否有外部IP

kubectl get svc istio-ingressgateway -n istio-system

EXTERNAL-IP 一直处于pending状态,只能采用nodePort方式



export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

查看istio里有什么

kubectl get all -n istio-system

诊断istio的问题

istioctl analyze -n pib-core

httpbin

通过pks进行部署

获取部署文件 (下面的kubectl_pib_core是我设置的alias,具体内容已经找不到了)

kubectl_pib_core get deployment httpbin -o yaml > httpbin_deployment.yaml

注释掉generation的信息,否则需要手动+1

注入istio,重新部署

kubectl apply -f <(istioctl kube-inject -f ./httpbin_deployment.yaml)

查看注入的envoy的access log

kubectl_pib_core logs -l caas_service=httpbin -c istio-proxy

kiali

将kiali的pod的端口,映射到master节点机器上

kubectl -n istio-system port-forward --address 0.0.0.0 $(kubectl -n istio-system get pod -l app=kiali -o jsonpath='{.items[0].metadata.name}') 20001:20001 &

在k8s的nginx添加路由关系:

https://xx.xx.xx.xx/kiali/ 可以访问到kiali

用户名和密码都是admin

kiali的用户名和密码采用secret托管,也是可以获知的

kubectl_istio get secrets/kiali  --template={{.data.username}} | base64 -d
kubectl_istio get secrets/kiali  --template={{.data.passphrase}} | base64 -d

如果要在kiali中显示出ingressgateway到服务这条链路,需要显式声明容器监听的port

两个方法:

方法1:

修改k8s部署的template

在deployment.yaml的容器containers下新增

        ports:

{{- if .Values.container_ports }}

{{ toYaml .Values.container_ports | indent 10 }}

{{- end }}

然后在values.yaml新增

container_ports:

- containerPort: xxxx

方法2:

修改istio的virtualservice,显式声明port

如:

    - destination:

        host: ibudda-user

        port:

          number: 8010

在部署模板的values.yaml中

需要对label进行定义:

labels: 

  app: ibudda-xxxx

  version: v2

app标签是kiali用于识别是否是application的依据

version是做版本路由的重要参数

另外,在values.yaml中,需要将ports的name改为http,这样kiali才能正常显示gateway到服务这一段的流量。

ports:

- port: 8080

  targetPort: 8080

  name: "http"

istio新增网关(envoy)

master节点执行:kubectl -n istio-system port-forward --address 0.0.0.0 $(kubectl -n istio-system get pod -l app=istio-ingressgateway -o jsonpath='{.items[0].metadata.name}') 15000:15000 &

在nginx上新增/envoy/执行 istio-ingressgateway的转发

则可以通过:https://ibudda-stg.paic.com.cn/envoy/  进入istio入口网关的管理员界面,从而获取必要的信息。

k8s的部署模板的values.yaml的ports的name,要改为http,才能被istio正常监控,否则会缺失一些信息。

统一认证:

https://www.cnblogs.com/kirito-c/p/12464531.html

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值