Skip to main content

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

Экзамен 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 на приличном уровне. Даже сама подготовка - хорошая ревизия знаний и умений в этой области.

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