Перейти к основному контенту

Инфраструктурный блог

Как сдать экзамен Cerified Kubernetes Administrator: личный опыт

Table of Contents

Экзамен Kubernetes Certified Administrator (CKA) по праву считается самым сложным из “базовых”. Интернет буквально заполнен жалобами людей, которые заплатили 400$ за попытку и не смогли его сдать. Linux Foundation предлагает одну дополнительную попытку и тестовый вариант экзамена (аж 3 тестовых сессии). Это не помогает все равно - LFS сначала сделали упрощенный вариант CKAD (Certified Kubernetes Application Developer), а потом - еще более упрощенный CKAN. Я этот экзамен сдал. С первой попытки и на 86% (то есть я сделал одну ошибку в одном сложном вопросе). Вся подготовка заняла пол-года (на момент старта знания у меня были только теоретические). В этой статье я расскажу, как я готовился, зачем это вообще надо и на что обращать внимание.

# Мотивация

Kubernetes переживает сейчас бурный рост и его используют очень многие компании. Его ближайший конкурент mesos прекратил свою разработку (потому, что превосходство k8s - подавляющее). Другой конкурент - Hashicorp Nomad - на самом деле не совсем конкурент, так как решает несколько иные вопросы. Состояние Docker Swarm настолько ужасно, что Mirantis не убивает его, по-моему, из чистой жалости – я ни разу не видел сколько-то работающих конфигураций Swarm, а в тестах он ведет себя настолько нестабильно, что непонятно, зачем он в принципе нужен. Linux Foundation придумали 3 программы сертификации для тех, кто работает с K8s:

  • Certified Kubernetes Administrator (CKA). Экзамен для тех, кто строит и поддерживает инфраструктуры на базе K8s (operations engineering team)
  • Certified Kubernetes Application Developer (CKAD). Экзамен для разработчиков, который проверяет знание best practices по написанию и развертыванию приложений внутри K8s. Этакий CKA на минималках с упором именно на deploy.
  • Certified Kubernetes Security (CKS). Частично повторяет CKA, но с упором на безопасность. Для сдачи этого экзамена нужно иметь активный CKA - экзамен частично строится на его программе.
  • Certified Kubernetes Associate (CKAN). CKAD на минималках, совсем-совсем базовые вопросы для тех, кому и CKAD слишком сложно (все равно не сдают).

Все экзамены из “проф-линейки” (то есть исключая CKAN) стоят по 400$ за попытку, сдать их надо за год с момента оплаты. Каждый экзамен дает право на одну бесплатную пересдачу (в течении того же самого года). Приятная особенность - сдавать экзамены можно дома. За экзамен выдают электронный именной сертификат, который действует три года и очень нравится рекрутерам :)

# Процесс сдачи

Процесс в целом похож на классический экзамен для получения сертификата. Проводится он на английском языке (для ценителей есть японский и китайский варианты). Экзамен сдается дома с помощью прокторинга - нужно предоставить специальной программе доступ к рабочему столу компьютера и камере, специальный человек по ту сторону экрана (проктор) будет следить, чтобы экзаменуемый не списывал и ему не подсказывали. В целом условия довольно типичные:

  • Нельзя иметь при себе какие-либо смарт-устройства (телефон, смарт-часы, ноутбук)
  • На столе не может быть ничего, кроме, собственно, компа для сдачи
  • Напитки разрешены только прозрачные и в прозрачной же таре
  • На старте экзамена проктор просит показать два разных ID, одно из которых должно иметь ФИО латиницей (именно так, как оно записано в заявке на экзамен) и фото.
  • Комната должна быть пуста и в ней не должно быть других людей
  • Запрещены наушники

Экзамен идет 2 часа (раньше было 3, поменяли в прошлом году) и времени, на самом деле, довольно мало. Многие из сдающих не успевают ответить на все вопросы, я слышал это много раз. Все вопросы (это важная часть) - практические, в экзамене вообще нет теоретических вопросов. Это, на самом деле, один из основных секретов сложности экзамена – так, как нет теоретических вопросов – их невозможно списать и заучить. Вместо этого в рамках экзамена выдается тестовое окружение (SSH консоль прямо в окне браузера) и практические задачи что-то сделать: создать/удалить deployment, привязать secret и так далее. Вопросы можно условно поделить на “простые” и “сложные”, за “сложные” дают больше баллов. Именно по этому имеет смысл сначала просмотреть все вопросы. Если на вопрос можно сразу ответить (меньше, чем за минуту) - отвечаем, нет – идем дальше. После этого имеет смысл уделить время сложным вопросам, чтобы заработать больше баллов. На 2 часа выдается порядка 20 вопросов, то есть это 6 минут на вопрос в среднем. Быстрее ответите на простые вопросы – больше времени будет на сложные. В процессе экзамена никаких подсказок не будет, балл сразу тоже не покажут – письмо с оценкой приходит через сутки-двое. На экзамене разрешено использовать официальную документацию kubernetes (с оффсайта), включая справочник по API. Так же можно использовать github проекта (там есть референсные конфигурации, например - готовые конфиги PV/PVC). В принципе можно использовать и встроенные механизмы помощи (kubectl explain, kubectl api-resources). Ничего другого (google, kubernetes discussion forum, SO) - использовать нельзя, это кончается дисквалификацией. Официальное руководство разрешает сделать необходимые закладки заранее – этим обязательно надо пользоваться.

# Подготовка

Сдать CKA без подготовки невозможно. Нет, возможно, конечно, если вас зовут Келси Хайтауэр, Андрей Квапил или Бильям Ибрагим (вот насчет последнего не уверен). Так, как экзамен практический – нужно тренировать именно практические вопросы и тренировать их на скорость:

  • создание-изменение-скейлинг deployment-ов.
  • редактура разных компонентов (apply/inline edit/patch). Нужно держать в памяти иммутабельные поля, чтобы не споткнуться на экзамене.
  • создание-редактирование сервисов.
  • создание-редактирование pod-ов. Последнее может пригодиться для отладки, когда нужно посмотреть на кластер “изнутри” и проще поднять busybox или netshot.
  • создание configmap-ов и secret-ов, они очень часто попадаются.

Очень рекомендую запомнить и потренировать императивный подходы к вышеперечисленному, чтобы не писать длинный yaml с нуля. Это еще помогает быстро создать “скелет” конфигурации примерно таким образом: kubectl create deploy nginx --replicas=2 --image=nginx:stable -o yaml --dry-run=client > nginx-deploy.yaml

Я очень рекомендую пройтись по списку всех основных примитивов (по документации или книге) и понять, чем, к примеру, отличается service от ingress а daemonset от statefulset. Так же очень советую сделать лабораторную работу Kubernetes hard way. Вам абсолютно точно не придется делать этого на экзамене - это слишком долго. Но эта задача позволит понять, из каких компонент K8s состоит, как они взаимодействуют друг с другом и что происходит, когда они ломаются. Для прогона практики можно арендовать сервер в Linode (новоприбывшим дают 100$ кредита на 2 месяца) или в больших облаках (там тоже есть бонус для новичков, главное – следить за балансом). Машины с 4Gb RAM хватит для большинства лабораторных (исключая те, что про CNI - там нужно две машины в одной сети). Практика - 70% успеха на этом экзамене.

Если душа лежит к видеокурсам – обязательно берите те, где есть практические задачи (hands-on labs). Мне в свое время помог курс от Мумшада Манамбета (но один курс вас не спасет, практика обязательна и тут она важнее теории).

Условия экзамена разрешают использовать закладки - и их нужно обязательно подготовить. Я готовил закладки сам и поделил их на 3 группы:

  • справочники и прочая теория (API, описание certifications API, CNI, CRI).
  • практические задачи из официальной документации. В стиле “как обновить k8s через kubeadm на специфичную версию”, “как создать и затем использовать секрет”
  • готовые референсные конфиги (yaml с готовым рабочим примитивом).

В сети есть некоторое количество уже готовых подборок закладок, вот эта подборка от ITNext мне показалась лучшей.

В рамках подготовки к экзамену, если он уже оплачен – появляется возможность взять тестовые сессии на [killer.sh]. Бесплатно доступно 3 сессии, каждая такая сессия доступна сутки с момента запроса. По моим ощущениям - эти сессии слегка сложнее реального экзамена, но не радикально. Эти сессии помогут понять, как идет реальный экзамен (там даже интерфейс такой же, только проктора нет).

# Чего я делать не советую

Первое и самое главное – сильно не советую жульничать. Экзамен сдается через Pearson Vue, в наихудшем случае это кончится баном в PV и аннуляцией уже выданных сертификатов (да, их EULA такое позволяет). Экзамен непростой, но если озаботиться подготовкой – сдать его вполне реально. Многие статьи рекомендуют выучить hotkey-и для tmux и идеально владеть vim. ИМХО, если вы не умеете – тратить время не стоит. Если vim вам прямо совсем не дается – на тестовой машине есть nano, нужно просто знать, как переключить редактор (через переменную EDITOR). Tmux вообще не нужен на экзамене. Так же не советую пытаться что-то запмнить наизусть – официальная документация и подсказки из API всегда доступны. Тратить силы и время на именно запоминание каких-то цифр или команд – просто расточительство и никак не поможет.

Не советую назначать экзамен после окончания рабочего дня или в сильно неудобное время – экзамен требует полной сосредоточенности, отвлечение может стоить вам баллов, и, как следствие, сертификата.

# На что обращать внимание на экзамене

Главное – на время. Его очень мало и важность времени трудно переоценить. Если вы чувствуете, что застряли в задаче – поставьте флажок и двигайтесь дальше. Если будет время – потом вернетесь. Следующее, на что я советую обращать внимание – на формулировку задачи. В формулировке есть все необходимое, но там может скрываться важная подсказка, которую легко упустить: указание на определенный namespace, label, граничное условие. Авторы тестов такие вопросы очень любят, проколоться элементарно. Результат? Незачет вопроса.

Если вы ответили на все вопросы, а время еще осталось (хотя бы минут 5-10) – пройдитесь по вопросам еще раз, прочитайте формулировки и проверьте решение. Одну свою задачу я переделывал, ибо поторопился. Простые задачи в целом довольно прямолинейные и если вы уделили время практике – проблем быть не должно - развернуть сервис, написать политику безопасности, дать пользователю права, привязать-отвязать диск, организовать двум сервисам общение друг с другом, разобраться, почему сервис не стартует… Нормальные задачи нормального админа. Сложность у задач, как я уже говорил, разная. Сложная задача видна сразу, уже по формулировкам понятно, что она даст много баллов. Если задачу можно решить несколькими способами – они все идут в зачет (проверяется результат, а не способ). Но опять же, проверяйте условия задачи!

# Заключение

Не смотря на страшный имидж - экзамен совсем не такой сложный, каким хочет казаться. Низкий процент успеха продиктован, думаю, физическим отсутствием дампов (теоретических вопросов-то нет!). При наличии времени на подготовку и некоторых теоретических знаний о том, как работает Linux сдать его будет не смертельно сложно. Главное - следить за временем, быть внимательным и потратить время на подготовку. Экзамен покрывает разные топики и человек, который его сдал - скорее всего знает k8s на приличном уровне. Даже сама подготовка - хорошая ревизия знаний и умений в этой области.

Удачи на экзамене!