👨🚀 Как запустить локальные кластеры Kubernetes в Docker

by itisgood
Если вы хотите протестировать Kubernetes без каких-либо обязательств, самый простой и быстрый способ – использовать Docker контейнеры.
Этот метод не имеет много предпосылок и не требует больших ресурсов.
Любая приличная машина Linux, которая может запустить Docker, – это все, что требуется.
Для любителей Docker этот метод является еще одним вариантом, который вы можете изучить.
Настройка была выполнена на CentOS 7 и Ubuntu Server.
Но процесс должен быть аналогичным для других дистрибутивов Linux.

Шаг 1: Установите Docker

Начните с установки движка Docker, он будет использоваться для запуска всех сервисов Kubernetes.
Наши руководства ниже должны быть очень полезны.
Проверьте правильность установки докера, выполнив:
$ docker info
..............
Client:
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 19.03.1
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 4.15.0-54-generic
 Operating System: Ubuntu 18.04.2 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 7.604GiB
 Name: k8s-server
 ID: KRK3:OLPP:CCB2:CE5K:6PSD:D6JP:4Q6X:HL7H:46FN:YECO:CXL5:BQTX
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Шаг 2: Установите Go

Вам нужно установить Go (Golang), так как он будет использоваться для сборки необходимых пакетов.

Шаг 3: Установите kind


kind – это инструмент для запуска локальных кластеров Kubernetes с использованием «узлов» контейнера Docker.
kind в первую очередь предназначен для тестирования Kubernetes 1.11+, изначально предназначенного для тестов на соответствие.
$ GO111MODULE="on" go get sigs.k8s.io/kind
Скопируйте двоичный файл в каталог в вашем PATH.
sudo cp ~/go/bin/kind /usr/local/bin/
Проверьте версию:
$ kind version
v0.4.0

Шаг 4: Запустите локальные кластеры Kubernetes, используя «ноды» контейнера Docker.

Теперь мы выполнили все требования.
Мы должны быть готовы к созданию локального кластера Kubernetes, работающего на контейнерах Docker.
sudo kind create cluster
Вы должны получить вывод, как это:
 kind create cluster | sudo tee -a kind_output.txt
Creating cluster "kind" ...
 • Ensuring node image (kindest/node:v1.15.0) ?  ...
 ✓ Ensuring node image (kindest/node:v1.15.0) ?
 • Preparing nodes ?  ...
 ✓ Preparing nodes ?
 • Creating kubeadm config ?  ...
 ✓ Creating kubeadm config ?
 • Starting control-plane ?️  ...
 ✓ Starting control-plane ?️
 • Installing CNI ?  ...
 ✓ Installing CNI ?
 • Installing StorageClass ?  ...
 ✓ Installing StorageClass ?
Cluster creation complete. You can now use the cluster with:

export KUBECONFIG="$(kind get kubeconfig-path --name="kind")"
kubectl cluster-info
Вы можете просмотреть запущенный контейнер с помощью команды docker ps.
# docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                  NAMES
d5bd9c025fe6        kindest/node:v1.15.0   "/usr/local/bin/entr…"   27 minutes ago      Up 27 minutes       34213/tcp, 127.0.0.1:34213->6443/tcp   
kind-control-plane

Шаг 5: Установите инструмент командной строки Kubectl

Чтобы получить доступ к кластеру Kubernetes из командной строки, вам нужен инструмент командной строки kubectl.

Его можно легко установить, выполнив команду:

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

Сделайте исполняемым файл kubectl

chmod +x ./kubectl

Переместите двоичный файл в ваш путь.

sudo mv ./kubectl /usr/local/bin/kubectl
Протестируйте, чтобы убедиться, что вы установили последнюю версию:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.2", GitCommit:"f6278300bebbb750328ac16ee6dd3aa7d3549568", GitTreeState:"clean", B

Для других систем обратитесь к официальному руководству по установке kubectl.

Настроить автозаполнение:

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc 

Для пользователей zsh:

source <(kubectl completion zsh)
echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc

Шаг 6: Настройте kubectl

Создайте каталог конфигурации Kubectl:

mkdir ~/.kube

Создайте символическую ссылку конфигурации kubectl на созданный Kind конфигурационный файл.

ln -s `kind get kubeconfig-path --name="kind"` ~/.kube/config

Тестирование конфигурации kubectl.

$ kubectl cluster-info 
Kubernetes master is running at https://127.0.0.1:34213
KubeDNS is running at https://127.0.0.1:34213/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

$ kubectl config  get-clusters
NAME
kind

$ kubectl config  get-contexts
CURRENT   NAME                    CLUSTER   AUTHINFO           NAMESPACE
*         kubernetes-admin@kind   kind      kubernetes-admin

$ kubectl get nodes
NAME                 STATUS   ROLES    AGE   VERSION
kind-control-plane   Ready    master   30m   v1.15.0

$ kubectl get namespaces 
NAME              STATUS   AGE
default           Active   31m
kube-node-lease   Active   31m
kube-public       Active   31m
kube-system       Active   31m

$ kubectl get pods -n kube-system
NAME                                         READY   STATUS    RESTARTS   AGE
coredns-5c98db65d4-q7k7w                     1/1     Running   0          31m
coredns-5c98db65d4-svdpf                     1/1     Running   0          31m
etcd-kind-control-plane                      1/1     Running   0          30m
kindnet-nv5gq                                1/1     Running   1          31m
kube-apiserver-kind-control-plane            1/1     Running   0          30m
kube-controller-manager-kind-control-plane   1/1     Running   0          30m
kube-proxy-4n874                             1/1     Running   0          31m
kube-scheduler-kind-control-plane     

 

You may also like

Leave a Comment