Быстро создавайте среды kubernetes и kubeSphere (эффективно для личного тестирования)

Kubernetes

Я недавно осваиваю k8s, но установка k8s слишком хлопотна и занимает много времени.Поговорим о шагах установки. Ниже приведена конфигурация моей машины.На самом деле можно использовать и 2 ядра и 4G,но так как я хочу изучить kubeSphere требования к конфигурации высокие.Я тоже потратил на это много времени.Я буду записывать процесс обучения. Надеюсь, ты посмотришь, поставь лайк, кодировать слова непросто, чем больше смотришь, тем сильнее ты становишься.

Шаг 1. Измените имя хоста (необязательно)

Если во время установки и использования k8s возникает следующая ошибка, вам необходимо изменить имя хоста:

name: Invalid value: "k8s_master": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for
 validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')

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

# 修改 hostname
hostnamectl set-hostname your-new-host-name
# 查看修改结果
hostnamectl status
# 设置 hostname 解析
echo "127.0.0.1   $(hostname)" >> /etc/hosts

Шаг 2 - Установите необходимое программное обеспечение

использовать корень каквсе узлыВыполните следующий код для установки программного обеспечения:

  • docker
  • nfs-utils
  • kubectl / kubeadm / kubelet
# 在 master 节点和 worker 节点都要执行
curl -sSL https://kuboard.cn/install-script/v1.15.4/install-kubelet.sh | sh

Контент, специфичный для сценария =>install-kubelet.sh

Шаг 3. Установите кластер k8s с одним главным узлом.

Меры предосторожности:

  • Выполнить на машине master-k8s от имени root
  • При инициализации главного узла, если вы хотите повторно инициализировать главный узел из-за ошибок конфигурации на некоторых промежуточных шагах, выполнитеkubeadm resetдействовать
  • Сегмент сети, используемый POD_SUBNET, не может пересекаться с сегментом сети, в котором расположен главный узел/рабочий узел. Значение этого поля является значением CIDR. Если вы не знакомы с концепцией CIDR, не изменяйте значение этого поля. 10.100.0.1/20

Выполните следующие команды только на узле master-k8s.

# 替换 x.x.x.x 为 master-k8s 节点实际 IP(请使用内网 IP)
# export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
export MASTER_IP=172.18.24.217
# 替换 apiserver.demo 为 您想要的 dnsName (不建议使用 master 的 hostname 作为 APISERVER_NAME)
export APISERVER_NAME=apiserver.demo
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/20
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.15.4/init-master.sh | sh

Контент, специфичный для сценария =>init-master.sh

Проверьте результат инициализации мастера

# 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
watch kubectl get pod -n kube-system -o wide

# 查看 master 节点初始化结果
kubectl get nodes -o wide

Шаг 4 — Инициализируйте рабочие узлы

Выполните следующую команду на узле master-k8s

# 只在 master 节点执行
kubeadm token create --print-join-command
# 查看 master 节点初始化结果
kubectl get nodes -o wide

доступныйkubeadm joinКоманды и параметры, как показано на рисунке

Выполнить на других рабочих узлах (то есть node1, 2, 3 в первом изображении ecs)kubeadm joinКоманды и параметры, как показано на рисунке ниже
В этот момент перейдите к узлу master-k8s, чтобы выполнитьkubectl get nodes -o wideВы можете видеть, что новый узел присоединился

Шаг 5 - Установите helm (подготовка kubeSphere)

Выполните следующую команду

wget https://get.helm.sh/helm-v2.16.0-linux-amd64.tar.gz
tar zxvf helm-v2.16.0-linux-amd64.tar.gz 
mv linux-amd64/helm /usr/local/bin/
helm version

воплощать в жизньhelm versionВы видите, что клиент установлен, но сервер не установлен.

Создайтеrbac-config.yamlдокумент

vi rbac-config.yaml

Введите следующее:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

выполнить после сохраненияkubectl create -f rbac-config.yaml

После того, как вышеуказанные шаги будут успешно настроены, установите румпель(та же версия, что и у клиента helm)

# 以下命令二选一

# google源
helm init --service-account tiller --upgrade -i gcr.io/kubernetes-helm/tiller:v2.16.0
# 阿里源
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

# 参数--stable-repo-url用于拉取charts所在源的位置,如果不设置则默认访问官方charts
# 查看tiller是否安装成功    
kubectl get pod -n kube-system -l app=helm

выполнить сноваhelm versionВы можете видеть, что и клиент, и служба установлены

Шаг 6. Официальное развертывание KubeSphere

Требования к версии:

Рамка Версия
Kubernetes >=1.13.0 && <=1.16.0
GitVersion >v1.13.0
Helm >= 2.10.0

Требования к машине:

Общий доступный объем памяти рабочих узлов кластера составляет не менее 10 ГБ, рекомендуется 20 ГБ.

Если ваша среда Kubernetes соответствует вышеуказанным требованиям, вы можете перейти к следующим шагам.

  1. на мастер-k8sУзел установки kubeSphere
# 在Kubernetes 集群中创建名为 kubesphere-system 和 kubesphere-monitoring-system 的 namespace。

cat <<EOF | kubectl create -f -
---
apiVersion: v1
kind: Namespace
metadata:
    name: kubesphere-system
---
apiVersion: v1
kind: Namespace
metadata:
    name: kubesphere-monitoring-system
EOF
  1. Создайте секрет для сертификата ЦС кластера Kubernetes.

Примечание. Создайте в соответствии с текущими путями сертификатов ca.crt и ca.key кластера (путь сертификата для Kubeadm для создания кластера обычно /etc/kubernetes/pki)

kubectl -n kubesphere-system create secret generic kubesphere-ca  \
--from-file=ca.crt=/etc/kubernetes/pki/ca.crt  \
--from-file=ca.key=/etc/kubernetes/pki/ca.key
  1. Создайте секрет сертификата для кластера etcd.

Примечание. Создается в соответствии с фактическим местоположением сертификата etcd кластера;

  • Если etcd настроен с использованием сертификата, см. следующее создание (следующие команды применимы к среде кластера Kubernetes, созданной Kubeadm):
kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs  \
--from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt  \
--from-file=etcd-client.crt=/etc/kubernetes/pki/etcd/healthcheck-client.crt  \
--from-file=etcd-client.key=/etc/kubernetes/pki/etcd/healthcheck-client.key
  • Если в etcd не настроен сертификат, создайте пустой секрет:
kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
  1. Клонируйте репозиторий kubesphere-installer локально.
yum install git
git clone https://github.com/kubesphere/ks-installer.git
  1. Войдите в ks-installer и разверните KubeSphere в кластере Kubernetes.
cd deploy

# 根据参数说明列表,编辑 kubesphere-installer.yaml 中 ks-config.yaml 为当前集群参数信息(若 etcd 无证书,设置 etcd_tls_enable: False)
vim kubesphere-installer.yaml

kubectl apply -f kubesphere-installer.yaml

Исправлятьkube_apiserver_hostа такжеetcd_endpoint_ipsИнтранет IP машины

Необязательный элемент установки, вы можете сначала отключить его, если он вам не нужен

  1. Просмотр информации журнала развертывания
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l job-name=kubesphere-installer -o jsonpath='{.items[0].metadata.name}') -f
  1. Успешная установка После успешной установки выполните следующую команду, чтобы проверить статус
kubectl get svc -n kubesphere-system

Используйте IP: 30880 для доступа к пользовательскому интерфейсу KubeSphere, учетная запись администратора кластера по умолчанию — admin/P@88w0rd.

Поскольку это также обучение, я также делюсь средой, чтобы каждый мог испытать следующее ==>Адрес онлайн-опыта — номер учетной записи test/Test123.

Советы

Просмотрите узел узла, к которому принадлежит модуль в указанном пространстве имен.

kubectl get pods -n istio-system -o wide

# 查看dev下的pod
kubectl get pods -n dev
## 查看pod xxx的yaml文件
kubectl get pods -n dev xxx -o yaml
# 获取namespace 为dev 的pod详情
kubectl get pods -n dev -o wide
# 创建pod
kubectl apply -f xxx.yaml
# 显示node的labeal
kubectl get nodes --show-labels
# 查看 namespace为dev下的pod详情
kubectl describe pods -n dev [podName]
## 查看node节点详情
kubectl describe nodes [nodeName] -o wide

столкнуться со статусом какContainerCreating, вы можете выполнить его на узле, где находится соответствующий podjournalctl -fПросмотр состояния образа или контейнера в режиме реального времени

Ссылаться на

установка руля
Установите kubernetes v1.15.4 с помощью kubeadm
руководство по установке источника kubesphere