Anton
$ mkdir /mnt/disks $ for vol in vol1 vol2 vol3; do mkdir /mnt/disks/$vol mount -t tmpfs $vol /mnt/disks/$vol done получается что надо все удалить, примонтировать диски в /mnt/disks/vol1
Andrey
А никто не пользовался pks от вмваре и их кубером? В чем плюсы?
Pavel
Привет, друзья! Я успешно забрал кластер у внезапно "пропавшего" коллеги. У меня есть парочка вопросов с Gitlab CI: Я завел успешно gitlab-runner в k8s. Когда запускаю пайплайн у меня на этапе деплоя не работает helm: ```$ helm version Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"} Error: cannot connect to Tiller```Подскажите пожалуйста, верно ли я понимаю: у меня gitlab runner в k8s, и когда запускается деплой, то раннер стартует другой контейнер, образ которого указан в image стейжа? Или я пошел не тем путем..?
Валентин
как там в розовом мире?
А в чем проблема? Сделать пакет в aur делов на 1 минуту. Зато потом cd сам будет пересобирать и обновлять в репозитории пакет
Pavel
за коллегу обидно, будьте осторожнее
Чтобы пришлось осторожнее быть, нужно разобраться сначала со всем этим делом)))
Anton
https://toster.ru/q/569353 Теперь диски находтся и создаются. Но Elasticsearch все равно говорит no persistent volumes available for this claim and no storage class is set Все данные на тостере обновил
Vadim
kubectl go бинарник и ставиться как все go бинарники... curl && chmod +x 😬
curl -k для дополнительной безопасности еще
Rainbow
curl -k для дополнительной безопасности еще
alias же на это у всех прописан
Oleg
Всем привет. Тут есть отчаянные кто в кластер добавлял виндовые ноды ?
Oleg
Есть сервисы под венду написанные которые думаю в кластер запихнуть
Alexander
Есть сервисы под венду написанные которые думаю в кластер запихнуть
эт какие? До недавнего времени это ради mssql требовалось. Но сейчас и эта проблема решена.
Sergey
дотнет уже пихают в кубер
Oleg
Дотнет да, никто не собирается его выпиливать, поэтому и думаю про агент виндовый
Alexander
дуднет и под никсами тоже работает. Не всякий, конечно.
Stanislav
mono давно существует
Oleg
Хм
Etki
проще переезжать по частям все-таки, сначала кубер, потом на линупс
Sergey
в каком сервисе\языке загвоздка? почему нужна форточка?
Oleg
Не знал что можно на лиуксе запустить дотнет
Sergey
на хабре полно инфы
Oleg
Там какие то специфичные утилиты для этого?
Oleg
Mono?
Etki
бггг на хабре
Etki
да, mono project
Etki
там большая часть net framework портирована, но каких-то вещей нет
Oleg
Хм окей, почитаю
Stanislav
нет всякого winapi
ᛃᛟᚺᚾ ᚠᚨcᛖᛚᛖᛊᛊ ᛞᛟᛖ
Не знал что можно на лиуксе запустить дотнет
у меня проект с изначальным деплойментом в к8сы
ᛃᛟᚺᚾ ᚠᚨcᛖᛚᛖᛊᛊ ᛞᛟᛖ
называется dotnet core
ᛃᛟᚺᚾ ᚠᚨcᛖᛚᛖᛊᛊ ᛞᛟᛖ
работает просто заебись. есть еще проблемы с некоторыми тулами, но уже можно в продакшон
Oleg
Спасибо за инфу
Alexander
нет всякого winapi
это какие-то очень специфические серверные задачи требуют винапи. С ходу могу только что-нибудь про сертифицированную отечествуенную криптографию придумать.
ᛃᛟᚺᚾ ᚠᚨcᛖᛚᛖᛊᛊ ᛞᛟᛖ
это какие-то очень специфические серверные задачи требуют винапи. С ходу могу только что-нибудь про сертифицированную отечествуенную криптографию придумать.
да это вообще пагубный путь затачиваться на апи конкретной платформы. тут дело не в дотнете как таковом. если у тебя есть требования про криптографию, то там навряд ли стоит выбор к8с клауд/виндовые серваки он премис
ᛃᛟᚺᚾ ᚠᚨcᛖᛚᛖᛊᛊ ᛞᛟᛖ
тем более всегда можно извернуться и сделать отдельный сервис с вендою чисто лишь для одной задачи
ᛃᛟᚺᚾ ᚠᚨcᛖᛚᛖᛊᛊ ᛞᛟᛖ
поднять впсину на авс, и нехай оно там дергает че ему нравится из апи
Peter
незачем, поэтому curl && chmod +x
Когда поднимается локальный кластер выставляется symlink /usr/local/bin/kubectl -> /Applications/Docker.app/Contents/Resources/bin/kubectl Когда останавливается линк зачем-то убивается, но появляется другой /Users/peter/Library/Group Containers/group.com.docker/bin/kubectl А по этому пути даже bin не существует. Просто руками выставил первый линк и мои волосы стали снова шелковистыми.
Anton
В примерах документации что?
Что интересно диск с системой тоже замонтировался mount |grep /dev/vda1 /dev/vda1 on / type ext4 (rw,relatime,data=ordered) /dev/vda1 on /var/lib/kubelet/pods/89d44bff-cb9e-11e8-b52a-fa163e47d93f/volume-subpaths/config/elasticsearch/0 type ext4 (rw,relatime,data=ordered)
Anton
Подскажите что не правильно сделал. все описал тут с логами https://toster.ru/q/569353
Anton
прочитайте документацию пожалуйста. там совсем не много
Anton
отладить неплохо было бы, запросить (get) pv, pvc, сделать для них describe. сравнить что там, подумать
Anton
сделал "запросить (get) pv, pvc, сделать для них describe." наверное в тостер никто не заглядывает. придется логи сюда постить
Anton
Примонтирован 50ГБ диск в эту папку mount /dev/vdb1 /mnt/disks/vdb1 Проверяем mount | grep mnt /dev/vdb1 on /mnt/disks/vdb1 type xfs (rw,relatime,attr2,inode64,noquota)
Anton
Проверяем PV kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-5bec36e4 49Gi RWO Delete Available local-storage 2m15s local-pv-aa880f42 49Gi RWO Delete Available local-storage 2m15s local-pv-b6ffa66b 49Gi RWO Delete Available local-storage 2m15s
Anton
Запускаем установку elasticsearch helm install incubator/elasticsearch --name my-release --set data.storageClass=local-storage,data.storage=10Gi
Anton
Смотрим PVC kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE data-my-release-elasticsearch-data-0 Pending 3m15s data-my-release-elasticsearch-master-0 Pending 3m15s
Anton
Смотрим describe PVC kubectl describe pvc data-my-release-elasticsearch-data-0 Name: data-my-release-elasticsearch-data-0 Namespace: default StorageClass: Status: Pending Volume: Labels: app=elasticsearch component=data release=my-release Annotations: <none> Finalizers: [kubernetes.io/pvc-protection] Capacity: Access Modes: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal FailedBinding 2s (x4 over 31s) persistentvolume-controller no persistent volumes available for this claim and no storage class is set
Anton
Логи: kubectl logs local-volume-provisioner-9wmqm --namespace kube-system I1009 08:34:19.214312 1 common.go:259] StorageClass "local-storage" configured with MountDir "/mnt/disks", HostDir "/mnt/disks", BlockCleanerCommand ["/scripts/quick_reset.sh"] I1009 08:34:19.214560 1 main.go:42] Configuration parsing has been completed, ready to run... I1009 08:34:19.214991 1 common.go:315] Creating client using in-cluster config I1009 08:34:19.245635 1 main.go:52] Starting controller I1009 08:34:19.245659 1 controller.go:42] Initializing volume cache I1009 08:34:19.249252 1 populator.go:85] Starting Informer controller I1009 08:34:19.249273 1 populator.go:89] Waiting for Informer initial sync I1009 08:34:20.249475 1 controller.go:72] Controller started I1009 08:34:20.250066 1 discovery.go:254] Found new volume of volumeMode "Filesystem" at host path "/mnt/disks/vdb1" with capacity 53659832320, creating Local PV "local-pv-5bec36e4" I1009 08:34:20.301162 1 discovery.go:280] Created PV "local-pv-5bec36e4" for volume at "/mnt/disks/vdb1" I1009 08:34:20.301826 1 cache.go:55] Added pv "local-pv-5bec36e4" to cache I1009 08:34:20.343959 1 cache.go:64] Updated pv "local-pv-5bec36e4" to cache I1009 08:34:20.353803 1 cache.go:64] Updated pv "local-pv-5bec36e4" to cache
Anton
Смотрим df | grep disks у пода local-volume-provisioner-9wmqm kubectl --namespace kube-system exec local-volume-provisioner-9wmqm -- df | grep disks /dev/vda1 9774628 6355168 2961036 69% /mnt/disks /dev/vdb1 52402180 32944 52369236 1% /mnt/disks/vdb1
Anton
мне кажется написано все в describe pvc
Anton
Что интересно диск с системой тоже замонтировался mount |grep /dev/vda1 /dev/vda1 on / type ext4 (rw,relatime,data=ordered) /dev/vda1 on /var/lib/kubelet/pods/89d44bff-cb9e-11e8-b52a-fa163e47d93f/volume-subpaths/config/elasticsearch/0 type ext4 (rw,relatime,data=ordered)
Anton
no persistent volumes available я так думаю потом учто pvc примонтировался к /dev/vda1 - а это системный диск
Vadim
PV есть, а у PVC StorageClass не указан
Vadim
очередная победа хелма похоже
Anton
PV есть, а у PVC StorageClass не указан
Запускал так установку elasticsearch helm install incubator/elasticsearch --name my-release --set data.storageClass=local-storage,data.storage=10Gi
Anonymous
Не мало ли 10?
Rainbow
Запускал так установку elasticsearch helm install incubator/elasticsearch --name my-release --set data.storageClass=local-storage,data.storage=10Gi
kubectl edit pcv data-my-release-elasticsearch-data-0 и StorageClass руками для теста указать
Anton
apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: 2018-10-09T08:37:21Z finalizers: - kubernetes.io/pvc-protection labels: app: elasticsearch component: data release: my-release name: data-my-release-elasticsearch-data-0 namespace: default resourceVersion: "1231" selfLink: /api/v1/namespaces/default/persistentvolumeclaims/data-my-release-elasticsearch-data-0 uid: 89e00b45-cb9e-11e8-b52a-fa163e47d93f spec: accessModes: - ReadWriteOnce dataSource: null resources: requests: storage: 30Gi storageClassName: local-storage status: phase: Pending ~
Anton
добавил storageClassName: local-storage
Anton
error: persistentvolumeclaims "data-my-release-elasticsearch-data-0" is invalid
Anton
похоже что то с elasticsearch helm install stable/prometheus --name stable-prometheus --set server.persistentVolume.storageClass=local-storage --set alertmanager.persistentVolume.storageClass=local-storage kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE stable-prometheus-alertmanager Bound local-pv-aa880f42 49Gi RWO local-storage 9s stable-prometheus-server Bound local-pv-5bec36e4 49Gi RWO local-storage 9s
Denis
Товарищи, подскажите как быть если деплой Helm зафейлился по некоторым причинам, и состояние релиза FAILED. После этого Helm может затупить из за этого и выдавать ошибки, по типу релиза не сущевствует. Мне помогало удаление релиза при помощи helm del, но на продакшене не всегда есть такая возможность. Как лучше поступать в подобных ситуациях?
Timur
угу
Anton
Никого не смущает Create cluster with Storage class ssd on Kubernetes 1.5+ $ helm install incubator/elasticsearch --name my-release --set data.storageClass=ssd,data.storage=100Gi в официальном readme https://github.com/helm/charts/tree/master/incubator/elasticsearch в общем отправил им fix pull request
Artem
в charts/stable еще очень много дичи
Alexey
Привет. Идеологический вопрос. Представим комплексное окружение, микросервисы, вот это все. Каждое окружение - отдельный namespace, в который весь стек деплоится из helmfile. Как быть с шареными настройками/секретами, типа database credentials или домена? Деплоить общие настройки окружения в виде отдельного чарта или дублировать в configmap/secret'ы каждого сервиса? Кто как делает?
Rainbow
дублировать
Rainbow
иначе чистить через пол года... придется.
Alexey
Ну чистить вроде не сложно, пересоздал namespace - и все почистилось 🙂
Rainbow
если общие секреты?
Rainbow
помнить, что правка этого секрета может кому-то что-то сломать и тп.
Rainbow
гоферы советуют с собой таскать vendor. Это прям вынос мозга был, а на деле даже удобно оказалось. Тут так же.
Alexey
Ну я больше про всякие тестовые окружения. Два сервиса, пушут разные команды, но оба сервиса ходят в одну базу, например. Деплоить надо раздельно.