Ответы пользователя по тегу Kubernetes
  • Как прокидывать Ingress controller наружу?

    Приветствую.

    Ниже пример конфигурации daemon set для bare-metal k8s. Если будут вопросы - пишите.
    apiVersion: extensions/v1beta1
    kind: DaemonSet
    metadata:
      name: nginx-ingress-lb
      labels:
        name: nginx-ingress-lb
      namespace: kube-system
    spec:
      updateStrategy:
        type: RollingUpdate
      template:
        metadata:
          labels:
            name: nginx-ingress-lb
          annotations:
            prometheus.io/port: '10254'
            prometheus.io/scrape: 'true'
        spec:
          serviceAccountName: nginx-ingress-serviceaccount
          # This may be used to push kubernetes SVCs to the internet
          # Label a secure host as 'edge-router' + setup forwarding, SSL certs, etc.
          hostNetwork: true
          nodeSelector:
            node-role.kubernetes.io/ingress: "true"
          terminationGracePeriodSeconds: 60
          containers:
          - image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.0
            name: nginx-ingress-lb
            readinessProbe:
              httpGet:
                path: /healthz
                port: 10254
                scheme: HTTP
            livenessProbe:
              httpGet:
                path: /healthz
                port: 10254
                scheme: HTTP
              initialDelaySeconds: 10
              timeoutSeconds: 1
            ports:
            - containerPort: 80
              hostPort: 80
            - containerPort: 443
              hostPort: 443
            env:
              - name: POD_NAME
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.name
              - name: POD_NAMESPACE
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.namespace
            args:
            - /nginx-ingress-controller
            - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
            - --configmap=$(POD_NAMESPACE)/nginx-ingress-configmap
            - --default-ssl-certificate=$(POD_NAMESPACE)/default-ssl-cert
    Ответ написан
  • Как вынести порт в kubernetes-dashboard наружу?

    Если у вас установлен и настроен ingress-контроллер, то примерно так:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: kubernetes-dashboard
      annotations:
        kubernetes.io/ingress.class: nginx
        kubernetes.io/tls-acme: "true"
        ingress.kubernetes.io/ssl-redirect: "true"
        ingress.kubernetes.io/use-port-in-redirects: "true"
      namespace: kube-system
    spec:
      tls:
      - hosts:
        - kubedash.example.com
        secretName: kubedash-tls
      rules:
      - host: kubedash.example.com
        http:
          paths:
          - path: /
            backend:
              serviceName: kubernetes-dashboard
              servicePort: <порт_вашего_сервиса>


    Если контроллера нет или не планируется, но нода/ы имеют внешний доступный IP, то можно сделать доступным сервис так (и не забыть на файерволе правило настроить для выбранного порта):

    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard-nodeport
      namespace: kube-system
    spec:
      type: NodePort
      ports:
        - port: 443
          targetPort: 8443
          nodePort: <порт_для_доступна_снаружи>
      selector:
        k8s-app: kubernetes-dashboard
    Ответ написан
  • Как в kubernetes примонтировать папку к контейнеру?

    Скорее всего дело вот в этом: path: /. Если вы хотите в линуксе ссылаться на текущую директорию, то это будет ./
    Имейте также в виду, что в h8s host это не та машина, с которой вы деплоите, а та, на которой будет запущен pod с контейнерами. Соответственно, вам стоит предварительно на хосте создать нужную директорию и поместить туда нужные файлы, а потом монтировать по абсолютному пути.
    Ответ написан