Нужен рабочий бинарный файл Kubectl внутри изображения - PullRequest
2 голосов
/ 03 марта 2020

Моя цель - создать модуль с работающим двоичным файлом Kubectl.

К сожалению, каждое изображение kubectl из docker концентратора, которое я загрузил с помощью basi c yaml, привело к CrashLoopbackOff или остальное.

Кто-нибудь получил какой-нибудь yaml (развертывание, модуль и т. Д. c), который бы дал мне мой kubectl?


Я пробовал кучу изображений с этим основанием c yaml там:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubectl-demo
  labels:
    app: deploy
    role: backend
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deploy
      role: backend
  template:
    metadata:
      labels:
        app: deploy
        role: backend
    spec:
      containers:
      - name: kubectl-demo
        image: <SOME_IMAGE>
        ports:
        - containerPort: 80

Thx

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

Или, вы можете сделать это. Это работает в моем контексте, с kubernetes на виртуальных машинах, где я знаю, где находится kubeconfig файл. Вам нужно будет внести необходимые изменения, чтобы он работал в вашей среде.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubectl
spec:
  replicas: 1
  selector:
    matchLabels:
      role: kubectl
  template:
    metadata:
      labels:
        role: kubectl
    spec:
      containers:
      - image: viejo/kubectl
        name: kubelet
        tty: true
        securityContext:
          privileged: true
        volumeMounts:
        - name: kube-config
          mountPath: /root/.kube/
      volumes:
      - name: kube-config
        hostPath:
          path: /home/$USER/.kube/
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: node-role.kubernetes.io/master
                operator: Exists
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists

Вот результат:

$ kubectl get po
NAME                      READY   STATUS    RESTARTS   AGE
kubectl-cb8bfc6dd-nv6ht   1/1     Running   0          70s
$ kubectl exec kubectl-cb8bfc6dd-nv6ht -- kubectl get no
NAME                     STATUS   ROLES    AGE   VERSION
kubernetes-1-17-master   Ready    master   16h   v1.17.3
kubernetes-1-17-worker   Ready    <none>   16h   v1.17.3
0 голосов
/ 03 марта 2020

Как Сурен уже объяснил в комментариях, что kubectl не демон, поэтому kubectl будет запускаться, выходить и вызывать перезапуск контейнера.

Для этого есть несколько способов. Одним из них является использование команды sleep с аргументом infinity. Это поддержит Pod, предотвратит его перезапуск и позволит вам запустить c в него.

Вот пример, как это сделать:

spec:
 containers:
 - image: bitnami/kubectl
   command:
   - sleep 
   - "infinity"
   name: kctl

Дайте мне знать, если это поможет.

...