Говорят, что только высокопроизводительные машины могут работать с K8S.

Java Kubernetes
Говорят, что только высокопроизводительные машины могут работать с K8S.

Адрес фактического центра электронной коммерции SpringBoot (40k+star):GitHub.com/macro-positive/…

Резюме

Я помню, когда я использовал Minikube для установки K8S раньше, он был слишком мал, чтобы дать 3G памяти! Недавно было обнаружено, что K8S на порядок достиг K3S, и минимум 0,5G памяти может работать, и установка удобна, что мало чем отличается от K8S. Всем рекомендую, и надеюсь, что больше друзей, у которых нет машин высокого класса, тоже смогут играть в K8S!

Введение в K3S

K3S — полностью совместимый с Kubernetes дистрибутив. Его можно установить с помощью одного двоичного пакета (менее 100 МБ), установка проста, памяти только наполовину, и может работать минимум 0,5 ГБ памяти.

Почему он называется K3S? Разработчики надеются, что K3S занимает вдвое меньше памяти, чем K8S.Kubernetes — это слово из 10 букв, сокращенно K8S. Затем половина размера представляет собой слово из 5 букв, сокращенно K3S.

Установить

Очень удобно использовать официальный скрипт для установки, а установку можно завершить одной командой!

  • Устанавливает K3S с помощью скрипта, который также устанавливает другие утилиты, в том числеkubectl,crictl,ctr,k3s-killall.shа такжеk3s-uninstall.sh;
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
  • После завершения установки будет отображаться следующая информация, и K3S будет зарегистрирован как служба в Linux;
Complete!
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
[INFO]  systemd: Starting k3s
  • Вы можете просмотреть текущий статус службы, и отображаемый статусactive.
[root@linux-local k3s]# systemctl status k3s
● k3s.service - Lightweight Kubernetes
   Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-01-28 10:18:39 CST; 2min 0s ago
     Docs: https://k3s.io
  Process: 14983 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
  Process: 14981 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)
 Main PID: 14986 (k3s-server)
    Tasks: 71
   Memory: 776.3M

использовать

Ранее мы использовали команду kubectl для управления K3S и K8S в Minikube.На этот раз мы по-прежнему создаем развертывание Nginx, а затем открываем его для внешнего доступа, создавая службу.

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

  • Поскольку инструмент kubectl установлен по умолчанию в K3S, мы можем использовать его напрямую, например, для просмотра номера версии kubectl;
kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2+k3s1", GitCommit:"1d4adb0301b9a63ceec8cabb11b309e061f43d5f", GitTreeState:"clean", BuildDate:"2021-01-14T23:52:37Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2+k3s1", GitCommit:"1d4adb0301b9a63ceec8cabb11b309e061f43d5f", GitTreeState:"clean", BuildDate:"2021-01-14T23:52:37Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
  • Вы также можете просмотреть сведения о кластере;
kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
  • Просматривая все узлы в кластере, вы можете обнаружить, что K3S создал простой кластер с одним узлом, подобный предыдущему Minikube.
kubectl get nodes
NAME          STATUS   ROLES                  AGE   VERSION
linux-local   Ready    control-plane,master   11m   v1.20.2+k3s1

Развернуть приложение

  • Укажите образ приложения и создайте Deployment, в котором создается приложение Nginx;
kubectl create deployment nginx-deployment --image=nginx:1.10
  • просмотреть все развертывания;
kubectl get deployments
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   1/1     1            1           6s

Просмотр приложений

  • Просмотр подробного состояния Pod, включая IP-адрес, занятые порты, зеркалирование и другую информацию;
kubectl describe pods
Name:         nginx-deployment-597c48c9dd-j49bc
Namespace:    default
Priority:     0
Node:         linux-local/192.168.5.15
Start Time:   Thu, 28 Jan 2021 10:53:14 +0800
Labels:       app=nginx-deployment
              pod-template-hash=597c48c9dd
Annotations:  <none>
Status:       Running
IP:           10.42.0.7
IPs:
  IP:           10.42.0.7
Controlled By:  ReplicaSet/nginx-deployment-597c48c9dd
Containers:
  nginx:
    Container ID:   containerd://560bbeefc9c5714b92ae9d0a1305c2b8746082f4aa11791a2b6e1f4288254ef0
    Image:          nginx:1.10
    Image ID:       docker.io/library/nginx@sha256:6202beb06ea61f44179e02ca965e8e13b961d12640101fca213efbfd145d7575
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Thu, 28 Jan 2021 10:53:16 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-fnrf7 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-fnrf7:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-fnrf7
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  38s   default-scheduler  Successfully assigned default/nginx-deployment-597c48c9dd-j49bc to linux-local
  Normal  Pulled     38s   kubelet            Container image "nginx:1.10" already present on machine
  Normal  Created    38s   kubelet            Created container nginx
  Normal  Started    37s   kubelet            Started container nginx
  • зайти внутрь контейнера и выполнитьbashкоманда, если вы хотите выйти из контейнера, вы можете использоватьexitЗаказ.
kubectl exec -it nginx-deployment-597c48c9dd-j49bc -- bash

приложение для внешнего доступа

  • Создайте службу для предоставленияnginx-deploymentЭто развертывание:
kubectl expose deployment/nginx-deployment --name="nginx-service" --type="NodePort" --port=80
  • просматривать статус всех служб;
kubectl get services
NAME            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.43.0.1     <none>        443/TCP        77m
nginx-service   NodePort    10.43.29.39   <none>        80:31494/TCP   10s
  • Доступ к службе Nginx можно получить с помощью команды CURL на сервере Linux, и информация о домашней странице Nginx будет напечатана;
curl localhost:31494
  • По сравнению с установкой контейнерных приложений Minikube на виртуальной машине, K3S устанавливается непосредственно на локальную машину, и порт брандмауэра может быть напрямую открыт для внешнего доступа;
# 开启端口
firewall-cmd --zone=public --add-port=31494/tcp --permanent
# 重启防火墙
firewall-cmd --reload
  • Доступ к домашней странице Nginx можно получить извне, и адрес доступа:http://192.168.5.15:31494

Суммировать

K3S действительно является очень полезным дистрибутивом K8S, который не только прост в установке, но и уменьшает использование памяти. Так как контейнерные приложения устанавливаются непосредственно на машину, внешний доступ также удобен!

Эта статьяGitHubGitHub.com/macro-positive/…Он был записан, приветствую всех на Star!