2017-04-08 4 views
0

kubernetes에서 linkerd를 둘러 봅니다. 내 로컬의 웹 사이트에서 linkerd deamonset 예제를 사용 중입니다. minikubeLinkerd와 k8s가 작동하지 않습니다.

모두 production 네임 스페이스에 배포됩니다. 시도 할 때

http_proxy=$(kubectl --namespace=production get svc l5d -o jsonpath="{.status.loadBalancer.ingress[0].*}"):4140 curl -s http://apiserver/readinezs 

아무 반응이 없습니다. 설치시 어디서 잘못됩니까?

내 Linkerd의 YAML : 나는 global tunnel을 사용하고 내 노드 응용 프로그램에서

kind: Service 
apiVersion: v1 
metadata: 
    name: apiserver 
spec: 
    selector: 
    app: apiserver 
    role: gateway 
    type: LoadBalancer 
    ports: 
    - name: http 
    port: 8080 
    - name: external 
    port: 80 
    targetPort: 8080 

: 여기

kind: Deployment 
apiVersion: extensions/v1beta1 
metadata: 
    name: apiserver-production 
spec: 
    replicas: 1 
    template: 
    metadata: 
     name: apiserver 
     labels: 
     app: apiserver 
     role: gateway 
     env: production 
    spec: 
     dnsPolicy: ClusterFirst 
     containers: 
     - name: apiserver 
     image: eu.gcr.io/xxxxx/apiservice:latest 
     env: 
     - name: MONGO_HOST 
      valueFrom: 
      secretKeyRef: 
       name: mongosecret 
       key: host 
     - name: MONGO_PORT 
      valueFrom: 
      secretKeyRef: 
       name: mongosecret 
       key: port 
     - name: MONGO_USR 
      valueFrom: 
      secretKeyRef: 
       name: mongosecret 
       key: username 
     - name: MONGO_PWD 
      valueFrom: 
      secretKeyRef: 
       name: mongosecret 
       key: password 
     - name: MONGO_DB 
      valueFrom: 
      secretKeyRef: 
       name: mongosecret 
       key: db 
     - name: MONGO_PREFIX 
      valueFrom: 
      secretKeyRef: 
       name: mongosecret 
       key: prefix 
     - name: NODE_NAME 
      valueFrom: 
      fieldRef: 
       fieldPath: spec.nodeName 
     - name: POD_IP 
      valueFrom: 
      fieldRef: 
       fieldPath: status.podIP 
     - name: http_proxy 
      value: $(NODE_NAME):4140 
     resources: 
      limits: 
      memory: "300Mi" 
      cpu: "50m" 
     imagePullPolicy: Always 
     command: 
     - "pm2-docker" 
     - "processes.json" 
     ports: 
     - name: apiserver 
      containerPort: 8080 
     - name: kubectl 
     image: buoyantio/kubectl:1.2.3 
     args: 
     - proxy 
     - "-p" 
     - "8001" 

는 서비스입니다 :

# runs linkerd in a daemonset, in linker-to-linker mode 
--- 
apiVersion: v1 
kind: ConfigMap 
metadata: 
    name: l5d-config 
data: 
    config.yaml: |- 
    admin: 
     port: 9990 

    namers: 
    - kind: io.l5d.k8s 
     experimental: true 
     host: localhost 
     port: 8001 

    telemetry: 
    - kind: io.l5d.prometheus 
    - kind: io.l5d.recentRequests 
     sampleRate: 0.25 

    usage: 
     orgId: linkerd-examples-daemonset 

    routers: 
    - protocol: http 
     label: outgoing 
     dtab: | 
     /srv  => /#/io.l5d.k8s/production/http; 
     /host  => /srv; 
     /svc  => /host; 
     /host/world => /srv/world-v1; 
     interpreter: 
     kind: default 
     transformers: 
     - kind: io.l5d.k8s.daemonset 
      namespace: production 
      port: incoming 
      service: l5d 
     servers: 
     - port: 4140 
     ip: 0.0.0.0 
     responseClassifier: 
     kind: io.l5d.retryableRead5XX 

    - protocol: http 
     label: incoming 
     dtab: | 
     /srv  => /#/io.l5d.k8s/production/http; 
     /host  => /srv; 
     /svc  => /host; 
     /host/world => /srv/world-v1; 
     interpreter: 
     kind: default 
     transformers: 
     - kind: io.l5d.k8s.localnode 
     servers: 
     - port: 4141 
     ip: 0.0.0.0 
--- 
apiVersion: extensions/v1beta1 
kind: DaemonSet 
metadata: 
    labels: 
    app: l5d 
    name: l5d 
spec: 
    template: 
    metadata: 
     labels: 
     app: l5d 
    spec: 
     volumes: 
     - name: l5d-config 
     configMap: 
      name: "l5d-config" 
     containers: 
     - name: l5d 
     image: buoyantio/linkerd:0.9.1 
     env: 
     - name: POD_IP 
      valueFrom: 
      fieldRef: 
       fieldPath: status.podIP 
     args: 
     - /io.buoyant/linkerd/config/config.yaml 
     ports: 
     - name: outgoing 
      containerPort: 4140 
      hostPort: 4140 
     - name: incoming 
      containerPort: 4141 
     - name: admin 
      containerPort: 9990 
     volumeMounts: 
     - name: "l5d-config" 
      mountPath: "/io.buoyant/linkerd/config" 
      readOnly: true 

     - name: kubectl 
     image: buoyantio/kubectl:v1.4.0 
     args: 
     - "proxy" 
     - "-p" 
     - "8001" 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: l5d 
spec: 
    selector: 
    app: l5d 
    type: LoadBalancer 
    ports: 
    - name: outgoing 
    port: 4140 
    - name: incoming 
    port: 4141 
    - name: admin 
    port: 9990 

은 여기 apiservice 내 배포입니다 :

const server = app.listen(port); 
server.on('listening', function(){ 

    // make sure all traffic goes over linkerd 
    globalTunnel.initialize({ 
    host: 'localhost', 
    port: 4140 
    }); 

console.log(`Feathers application started on ${app.get('host')}:${app.get('port')} `); 

답변

0

두 개의 동일한 노드 응용 프로그램을 배포하고 서로 요청을 보내면 작동합니다. 이상하게도 요청은 링커 대시 보드에 표시되지 않습니다.

2

curl 명령은 어디에서 실행됩니까?

http_proxy=$(kubectl --namespace=production get svc l5d -o jsonpath="{.status.loadBalancer.ingress[0].*}"):4140 curl -s http://apiserver/readinezs` 

예에서 linkerd 서비스는 공인 IP 주소를 노출하지 않습니다. kubectl get svc/l5d으로이를 확인할 수 있습니다. 외부 IP가 보이지 않을 것으로 예상됩니다.

서비스 정의를 수정하거나 침입 트래픽을 수신하기 위해 ClusterIP을 노출하는 추가 명시 적 외부 서비스를 생성해야한다고 생각합니다.