Exemplo de implantação do operador Jaeger em ambiente de produção

fundo

O pacote de instalação do istio vem com o método de implantação jaeger, mas o método de implantação que ele fornece é all-in-one, ou seja, o armazenamento de dados está na memória, o que não é adequado para o ambiente de produção. Portanto, precisamos seguir o Deploy oficial no método de implantação do ambiente de produção.Isso também é explicado na documentação oficial do istio.

Insira a descrição da imagem aqui
No kubernetes, a recomendação oficial é usar o método do operador para implantação. O método de implantação não é difícil. Basta consultar a documentação oficial. No entanto, há algumas coisas que precisam ser observadas ao se conectar ao istio. Vou registrar meu processo de instalação abaixo.

Este artigo registra apenas como implantar o Jaeger em um ambiente de produção. Em relação à aplicação aprofundada do Jaeger, não irei apresentá-lo aqui. Os alunos que precisarem podem consultar a documentação oficial por conta própria.

Documentação de referência: operador jaeger

implantar

Implantar operador jaeger

  1. De acordo com a documentação oficial, instale o cert-manager primeiro
    ! [Insira a descrição da imagem aqui](https://img-blog.csdnimg.cn/e96a63cd30924082a35cf0e6571af723.png

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.6.3/cert-manager.yaml

  1. Implantar operador jaeger

    De acordo com o documento oficial, continue a operação.
    Insira a descrição da imagem aqui
    Como o 1.46.0 ainda não foi lançado no github, a execução do comando de acordo com o documento oficial irá falhar, então podemos nos contentar com a próxima melhor opção e instalar o 1.45.0
    Insira a descrição da imagem aqui


kubectl create ns observability
kubectl create -f https://github.com/jaegertracing/jaeger-operator/releases/download/v1.45.0/jaeger-operator.yaml -n observability 
kubectl get deployment jaeger-operator -n observability

NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
jaeger-operator   1         1         1            1           48s

Observe que uma falha na inicialização do pod pode ocorrer aqui. Ao fazer isso kubectl describe pod -n observability jaeger-operator-58d97648c5-****, você descobrirá que gcr.io/kubebuilder/kube-rbac-proxy:v0.13.0 falhou ao fazer o download. Aqueles que jogam K8S com frequência devem saber que a biblioteca do Google está bloqueada ., você precisa encontrar uma maneira de obter essa imagem sozinho. Você pode extraí-la do endereço da imagem doméstica e marcá-la novamente, ou baixá-la em um ambiente ladder e exportar e importar a imagem... Resumindo, existem muitos caminhos.

Implantar jaeger

Como cada pessoa enfrenta ambientes diferentes nesta etapa, é necessário customizar a configuração de acordo com seu ambiente real. É recomendável ler o documento várias vezes.

Aqui estão minhas necessidades: O armazenamento que uso é um ES externo. Ao mesmo tempo, refiro-me à configuração oficial e uso o método de configuração de rollover do Elasticsearch . Em seguida, o ES externo tem uma conta e senha, para que eu possa usar o Secrets Support para configure a conta e a senha. Os detalhes dos segredos são Para métodos de configuração, consulte a quarta descrição do Elasticsearch Externokubectl create secret generic jaeger-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic
Insira a descrição da imagem aqui
. Minha configuração está postada abaixo.

#创建elasticsearch的用户密码secrets
$ kubectl create secret generic jaeger-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic
$ kubectl get secrets -n observability 
NAME                           TYPE                                  DATA   AGE
default-token-fc756            kubernetes.io/service-account-token   3      23h
jaeger-operator-service-cert   kubernetes.io/tls                     3      23h
jaeger-operator-token-dmrzc    kubernetes.io/service-account-token   3      20h
jaeger-secret                  Opaque                                2      22h
jaeger-token-n5xfx             kubernetes.io/service-account-token   3      20h

##jaeger部署文件
$ cat jaeger.yaml 
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: jaeger
  namespace: observability
spec:
  strategy: production
  collector:
    maxReplicas: 2
    resources:
      limits:
        cpu: 100m
        memory: 128Mi
  storage:
    type: elasticsearch
    options:
      es:
        server-urls: http://192.168.8.105:9200
        use-aliases: true
    esRollover:
      conditions: "{
    
    \"max_age\": \"2d\"}"
      readTTL: 168h
      schedule: "55 23 * * *"
    secretName: jaeger-secret
  query:
    serviceType: NodePort
$ kubectl apply -f jaeger.yaml
$ kubectl get svc,pod -n observability 
NAME                                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                    AGE
service/jaeger-collector                  ClusterIP   10.233.19.93    <none>        9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP   20h
service/jaeger-collector-headless         ClusterIP   None            <none>        9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP   20h
service/jaeger-operator-metrics           ClusterIP   10.233.29.204   <none>        8443/TCP                                                   20h
service/jaeger-operator-webhook-service   ClusterIP   10.233.28.228   <none>        443/TCP                                                    20h
service/jaeger-query                      NodePort    10.233.23.105   <none>        16686:32003/TCP,16685:32004/TCP                            20h

NAME                                           READY   STATUS      RESTARTS   AGE
pod/jaeger-collector-c498bfb45-khtrq           1/1     Running     0          20h
pod/jaeger-es-index-cleaner-28102555-t4v77     0/1     Completed   0          14h
pod/jaeger-es-lookback-28102555-d98x8          0/1     Completed   0          14h
pod/jaeger-es-rollover-28102555-2rxlw          0/1     Completed   0          14h
pod/jaeger-es-rollover-create-mapping-k4x5r    0/1     Completed   0          20h
pod/jaeger-operator-58d97648c5-gr2kx           2/2     Running     0          20h
pod/jaeger-query-79754974c7-7gnk9              2/2     Running     0          20h
pod/jaeger-spark-dependencies-28102555-dbnxt   0/1     Completed   0          14h

istio de acoplamento

Até agora, a implantação básica foi concluída. Você já pode usar a WEB-UI fornecida por jaeger-query, mas não há informações de rastreamento relacionadas ao istio no momento. Já mencionamos isso antes quando analisamos o documento oficial do istio . O endereço do jaeger-collector precisa ser definido na configuração do istio. O método oficial é definir os parâmetros ao instalar (atualizar) o istio. Na verdade, existe outro método:

$ kubectl get cm -n istio-system 
NAME                                  DATA   AGE
grafana                               4      63d
istio                                 2      63d
istio-ca-root-cert                    1      63d
istio-gateway-deployment-leader       0      63d
istio-gateway-status-leader           0      63d
istio-grafana-dashboards              2      63d
istio-leader                          0      63d
istio-namespace-controller-election   0      63d
istio-services-grafana-dashboards     4      63d
istio-sidecar-injector                2      63d
kiali                                 1      63d
kube-root-ca.crt                      1      63d
prometheus                            5      63d

istiod tem um cm e seu nome é istio. Só precisamos adicioná-lo ou modificá-lo em istio
Insira a descrição da imagem aqui
. Isso não significa que ele possa ser usado normalmente. Neste momento, você precisa reiniciar o istiod e então descobrirá que o serviço que você implantou anteriormente As informações de rastreamento ainda não podem ser vistas por meio do Jaeger. Neste momento, você precisa reiniciar o serviço injetado pelo istio e então poderá ver as informações de rastreamento.
Insira a descrição da imagem aqui

dockingkiali

Os alunos que usaram o kiali sabem que os rastreamentos podem ser visualizados em vários menus do kiali, e a fonte de dados é jaeger. Se usarmos o jaeger que vem com o istio, podemos visualizá-lo diretamente, sem qualquer configuração. Mas agora nós mesmos implantamos o jaejer
Insira a descrição da imagem aqui. , que é um pouco diferente do método de instalação que vem com o istio, então precisamos configurá-lo. O método específico também é muito simples, que é modificar o configmap do kiali

$ kubectl get cm -n istio-system kiali 
NAME    DATA   AGE
kiali   1      63d

Em seguida, encontre external_servicese adicione o seguinte conteúdo abaixo

  tracing:
    url: http://192.168.8.104:32003
    in_cluster_url: http://jaeger-query.observability:16685/jaeger

Insira a descrição da imagem aqui
O url é equivalente ao endereço do seu acesso externo à webUI do jaeger. Sua função é permitir que você acesse diretamente o jaeger no kiali. in_cluster_url é exibir rastreamentos no kiali.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/Mrheiiow/article/details/131109127
Recomendado
Clasificación