Практика с вами, чтобы играть в создание кластера k8s и Hello World

Kubernetes

предисловие

В связи с потребностями развития бизнеса компании услуги на swarm сейчас постепенно переводятся на k8s. И у меня, наконец, появилась возможность начать обучение (caikeng) k8s. Я не буду сравнивать рой и к8с здесь, во всяком случае, я знаю, что к8с более ароматный, чем рой. Эта серия руководств в основном предназначена для партнеров по разработке, которые хотят начать работу с k8s, но не имеют доступа.

Строительство окружающей среды

Конструирование среды в этой статье на самом деле не нужно создавать вручную, а использовать контейнерный сервис облачной платформы для создания кластера k8s. Цель очень проста, пусть профессиональные люди делают профессиональные вещи. Мы можем беспрепятственно использовать k8s и позволить облачной платформе выполнять обслуживание. Конечно, главная причина в том, чтобы позволить всем быстрее начать работу с k8s. Есть много облачных провайдеров, ниже мы рассмотрим Alibaba Cloud в качестве примера, чтобы описать, как создать кластер k8s.

Готов к работе

  • Подготовьте сервер ECS — назовите его Xiao A здесь.

    Это не обязательно, но рекомендуется купить один.Вы можете выбрать некоторые отдаленные районы для покупки, поэтому будут скидки, такие как Северный Китай 3 (Чжанцзякоу)

  • конфигурация сервера

    Рекомендуемая минимальная конфигурация:

    2 ядра 4G памяти

    Плати как сможешь

  • Операционная система

    Рекомендуется Centos7.7

  • установить программное обеспечение

    docker-должен быть установлен, в этой статье о нем говориться не будет, в сети много туториалов.

    Инструмент управления kubectl-k8s, говорится в следующем руководстве.

    Будут задействованы Nginx-последующие туториалы, поэтому рекомендуется установить

  • Запустите доменное имя, это тоже очень дешево

Установить Кубектл

исходная конфигурация

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

Установить

[root@mldong ~]# yum install -y kubectl

Создать кластер

Поиск контейнерных услуг

image-20200702110539909

Выберите создание кластера

image-20200702110725363

Конфигурация кластера

Выберите управляемую версию Kubernetes, обратите внимание на регион здесь и выберите тот же регион, что и сервер ECS A, упомянутый выше, чтобы они могли получать доступ друг к другу в одной и той же интрасети.

image-20200702111146250

image-20200702111228299

Конфигурация рабочего узла

Здесь мы используем только что добавленные инстансы, с оплатой по мере использования и выбираем подходящую конфигурацию, здесь мы выбираем более дешевую, ecs.t6-c1m2.large.

image-20200702111432457

Минимум два, операционная система может быть Centos7.7, в качестве метода входа рекомендуется использовать метод ключа, то есть открытый ключ предыдущего сервера ECS A, если нет, создайте его самостоятельно.ssh-keygen -t rsa, нажмите Enter три раза.

image-20200702111514705

Конфигурация компонента

Используйте интранет, так дешево. Вы можете использовать маленькую A для внешнего доступа. Подключаемый модуль хранилища выбирает CSI.

image-20200702111621242

Подтвердить конфигурацию

Конфигурация, которую я выбрал сейчас, относительно недорогая — более 40 центов в час, что дешевле похода в интернет-кафе. В дополнение к серверу ECS, есть еще балансировка нагрузки-частная сеть, которую позже научим, как ее закрывать.

image-20200702112205473

Проверка создания кластера, если это не удается, появится подсказка, просто сделайте это по мере необходимости.

image-20200702111800222

Кластер создается

image-20200702112312557

Кластер успешно создан

image-20200702112932338

Просмотр информации о кластере

image-20200702113218223

image-20200702113329235

Конфигурация КубеКонфиг

image-20200702113414755

Скопировать KubeConfig
[root@mldong ~]# cat /root/.kube/config
Подключиться к тесту кластера
[root@mldong nginx]# kubectl get node
NAME                           STATUS   ROLES    AGE   VERSION
cn-zhangjiakou.172.26.22.118   Ready    <none>   83m   v1.16.9-aliyun.1
cn-zhangjiakou.172.26.22.119   Ready    <none>   83m   v1.16.9-aliyun.1

Конфигурация группы безопасности кластера

Просмотр экземпляров облачного сервера

Только что создал два новых экземпляра

image-20200702113940049

Присоединитесь к той же группе безопасности, что и Сяо А.

image-20200702114347169

image-20200702114451373

Убедитесь, что группа безопасности настроена успешно

Если вы входите в кластер нормально, вы успешны, но на самом деле вам не нужно входить в кластер, просто проверьте это.

[root@mldong .kube]# ssh root@worker1 echo 666
666

Конфигурация службы изображений

Поскольку создается кластер интрасети, зеркало внешней сети нельзя получить напрямую, поэтому сначала необходимо настроить службу зеркала, доступ к которой можно получить из интрасети.

Поиск сервисов образов контейнеров

image-20200702115331703

Создать пространство имен

image-20200702115727413

Создать зеркальный репозиторий

image-20200702115409800

Обратите внимание на регион здесь, он должен соответствовать маленькому A

image-20200702115535004

Доступ к настройкам пароля для учетных данных

image-20200702120324695

Посмотреть детали склада

image-20200702120025340

Запомните адрес доступа интрасети, то есть частной сети

image-20200702120239436

Начать привет мир

Сначала сделайте зеркало

Загрузите последний образ nginx

[root@mldong yaml]# docker pull nginx:latest
latest: Pulling from library/nginx
8559a31e96f4: Pull complete 
8d69e59170f7: Pull complete 
3f9f1ec1d262: Pull complete 
d1f5ff4f210d: Pull complete 
1e22bfa8652e: Pull complete 
Digest: sha256:21f32f6c08406306d822a0e6e8b7dc81f53f336570e852e25fbe1e3e3d0d0133
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

Добавляйте теги к изображениям

[root@mldong yaml]# docker tag nginx:latest registry-vpc.cn-zhangjiakou.aliyuncs.com/mldong/java/nginx:latest

Войти на зеркальный склад

docker login --username=524719755@qq.com registry-vpc.cn-zhangjiakou.aliyuncs.com

Имя пользователя, используемое для входа, — это полное имя учетной записи Alibaba Cloud, а пароль — тот, который устанавливается при активации службы.

Вы можете изменить пароль для учетных данных на странице «Учетные данные для доступа».

Отправьте образ в зеркальный репозиторий

[root@mldong yaml]# docker push registry-vpc.cn-zhangjiakou.aliyuncs.com/mldong/java/nginx:latest
The push refers to repository [registry-vpc.cn-zhangjiakou.aliyuncs.com/mldong/java/nginx]
f978b9ed3f26: Pushed 
9040af41bb66: Pushed 
7c7d7f446182: Pushed 
d4cf327d8ef5: Pushed 
13cb14c2acd3: Pushed 
latest: digest: sha256:0efad4d09a419dc6d574c3c3baacb804a530acd61d5eba72cb1f14e1f5ac0c8f size: 1362

Опубликовать сервис nginx с помощью kubectl

добавлятьns.yamlдокумент

[root@mldong yaml]# cat ns.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: mldong-test

добавить однуnginx_deployment.yamlдокумент

[root@mldong nginx]# cat nginx_deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-pod
  namespace: mldong-test
spec:
  selector:
    matchLabels:
      app: nginx-pod
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
        - name: nginx
          image: registry-vpc.cn-zhangjiakou.aliyuncs.com/mldong/java/nginx:latest
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
              name: port
              protocol: TCP

добавить однуnginx_service.yaml

[root@mldong nginx]# cat nginx_service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nginx-nodeport
  namespace: mldong-test
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 32180 
  selector:
    app: nginx-pod

Создать пространство имен

[root@mldong yaml]# kubectl apply -f ns.yaml 
namespace/mldong-test created

просмотреть все пространства имен

[root@mldong yaml]# kubectl get ns
NAME              STATUS   AGE
default           Active   44m
kube-node-lease   Active   44m
kube-public       Active   44m
kube-system       Active   44m
mldong-test       Active   87s

создать модуль

[root@mldong nginx]# kubectl apply -f nginx_deployment.yaml 
deployment.apps/nginx-pod created

Просмотр модулей в указанном пространстве имен

[root@mldong nginx]#  kubectl get pods -n mldong-test
NAME                         READY   STATUS              RESTARTS   AGE   IP       NODE                           NOMINATED NODE   READINESS GATES
nginx-pod-66bbff87f9-vzlvs   0/1     ContainerCreating   0          3s    <none>   cn-zhangjiakou.172.26.22.119   <none>           <none>
[root@mldong nginx]#  kubectl get pods -n mldong-test
NAME                         READY   STATUS    RESTARTS   AGE   IP           NODE                           NOMINATED NODE   READINESS GATES
nginx-pod-66bbff87f9-vzlvs   1/1     Running   0          15s   172.20.0.7   cn-zhangjiakou.172.26.22.119   <none>           <none>

создать сервис

[root@mldong nginx]# kubectl apply -f nginx_service.yaml 
service/nginx-nodeport created

Просмотр службы в указанном пространстве имен

[root@mldong nginx]# kubectl get service -n mldong-test
NAME             TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
nginx-nodeport   NodePort   172.21.1.95   <none>        80:32180/TCP   76s

Убедитесь, что служба работает нормально

посетить любой узел

172.26.22.118 worker1 172.26.22.119 worker2

[root@mldong nginx]# curl worker1:32180
[root@mldong nginx]# curl worker2:32180

Обычный возврат выглядит следующим образом

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

На этом Hello world закончился. Чтобы сэкономить деньги, давайте научим вас, как остановить или разблокировать службу. Деньги не будут взиматься после остановки и отпускания.

Отключить настройки

Списание экземпляра

Есть два способа деактивировать инстанс: один — остановить только без зарядки, а другой — полностью освободить инстанс. Если вы хотите использовать его часто для практики, рекомендуется использовать метод без остановки, чтобы вам не нужно было перестраивать кластер в следующий раз.

остановить без комиссии метод

единственная остановка

Статус экземпляра -> Остановлен

image-20200702141832768

image-20200702141859929

пакетная остановка

image-20200702172641967

останавливаться

image-20200702142038790

остановился

image-20200702162009309

Отключить балансировку нагрузки

балансировка нагрузки поиска

image-20200702172335286

image-20200702171630946

Полностью освободить ресурсы экземпляра

Защита выпуска экземпляра должна быть изменена перед настройками выпуска экземпляра — Отмена

image-20200702141140823

image-20200702141233847

Настройки выпуска инстанса

Статус экземпляра -> Настройки выпуска

image-20200702140929526

image-20200702141728643

После остановки экземпляра сервера ECS его можно перезапустить, если вы хотите использовать его снова. Ребиллинг будет производиться после запуска.

имя счета

image-20200702170940388

image-20200702171353182

резюме

В этой статье используется служба контейнеров Alibaba Cloud для быстрого создания управляемой версии Kubernetes, чтобы быстрее изучить применение k8s. И оплата по мере использования, стоимость не слишком высока. Дешевле, чем модернизировать собственный компьютер. Разумеется, помимо Alibaba Cloud аналогичные сервисы будут и у Tencent Cloud и Huawei Cloud. Вот просто чтобы дать вам представление. На самом деле, не всегда думайте о том, чтобы построить его самостоятельно, это действительно сложно, если вы не профессионал. Последующие статьи серии k8s также будут основаны на текущем кластере. Надежда иметь друзей, чтобы учиться вместе.

Статьи по Теме

Практический опыт работы с k8s-ConfigMap и постоянным хранилищем

Рука об руку с вами, чтобы играть в k8s-полный выпуск сервиса, к которому можно получить доступ извне

Возьмите вас за руку, чтобы поиграть с расширенным Dockerfile и docker-compose k8s-docker

Рука об руку с вами, чтобы играть в развертывание проектов Springboot одним щелчком мыши k8s

Рука об руку с вами, чтобы играть в проект k8s-deploy vue одним щелчком мыши

Рука об руку, чтобы взять вас в игру k8s-подробное объяснение общих объектов

Рука об руку с вами, чтобы играть на линии установки и сборки k8s-jenkins

Практика с вами, чтобы поиграть с синтаксисом конвейера k8s-jenkins

Рука об руку, чтобы провести вас через конвейер k8s-jenkins для выпуска проекта springboot.

Взять вас за руку, чтобы поиграть в конвейер k8s-jenkins и выпустить проект vue.

Рука об руку с вами, чтобы играть в k8s-Health Check Survival Probe и Readiness Probe

Рука об руку с вами, чтобы построить кластер k8s на k8s-win10

Рука об руку с вами, чтобы создать службу среды разработки на k8s или k8s-win10