- Ubuntu 18.04
sudo update
sudo apt install git curl
Нужен для работы с kubernates.
# https://kubernetes.io/ru/docs/tasks/tools/install-kubectl/#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-kubectl-%D0%B2-linux
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
При работе с minikube используется виртуализация. Один из драйверов - kvm2.
Перед установкой необходимо:
- активировать виртуализацию в BIOS;
- активировать виртуализацию в виртуальной машине;
- деактивировать Hyper-V для Windows 10.
#https://kubernetes.io/ru/docs/setup/learning-environment/minikube/#%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D0%B0-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%8B
sudo apt update
sudo apt install cpu-checker
# Проверяем доступность KVM
kvm-ok
sudo apt install qemu-kvm libvirt-bin bridge-utils virtinst virt-manager
sudo systemctl is-active libvirtd
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
Также можно запускать minikube в режиме без драйвера виртуализации. Для этого потребуется установить Docker. Но рещение с KVM2 считается более правильным и безопасным.
#https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker ${USER}
su - ${USER}
# Проверка Docker
sudo docker run hello-world
# https://kubernetes.io/ru/docs/tasks/tools/install-minikube/
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
sudo apt-get install -y conntrack
# настройка автодополнения в текущую сессию bash, предварительно должен быть установлен пакет bash-completion .
source <(kubectl completion bash)
# добавление автодополнения autocomplete постоянно в командную оболочку bash.
echo "source <(kubectl completion bash)" >> ~/.bashrc
sudo chown -R $USER ~/.kube
minikube config set vm-driver none
minikube config set cpus 4
minikube config set memory 8192
minikube start --vm-driver=none
minikube status
minikube dashboard
# Accessing the Default Token
kubectl -n kube-system describe secret default
#Generate command completion for a shell
apt-get install bash-completion
source /etc/bash-completion
source <(minikube completion bash) # for bash users
source <(minikube completion zsh) # for zsh users
echo "source <(minikube completion zsh)" >> ~/.zshrc
sudo apt install openjdk-8-jdk
wget https://downloads.apache.org/spark/spark-3.0.1/spark-3.0.1-bin-hadoop2.7.tgz
tar xvf spark-3.0.1-bin-hadoop2.7.tgz
sudo mv spark-3.0.1-bin-hadoop2.7 /opt/spark
cd /opt/spark
mkdir ~/install && cd ~/install
wget https://apache-mirror.rbc.ru/pub/apache/spark/spark-3.0.1/spark-3.0.1-bin-hadoop3.2.tgz
tar xvf spark-3.0.1-bin-hadoop3.2.tgz
rm -rf spark-3.0.1-bin-hadoop3.2.tgz
sudo mv spark-3.0.1-bin-hadoop3.2 /opt/spark
# check spark-shell
spark-shell
cd /opt/spark
bin/docker-image-tool.sh -r k8s -m build
./bin/docker-image-tool.sh -r k8s-py -p ./kubernetes/dockerfiles/spark/bindings/python/Dockerfile -m build
kubectl create clusterrolebinding default --clusterrole=edit --serviceaccount=default:default --namespace=default
# https://conda.io/projects/conda/en/latest/user-guide/install/linux.html
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda install -c anaconda python=3.7
conda update --all
conda install -c conda-forge pyspark
import pyspark
pyspark.__version__
Версии pyspark и spark должны совпадать. Установить нужною версию можно комадой
conda install -n <env name> pyspark=3.0.1
При этом при создании контекста в Kubernetes создается указанное в конфигурации число executors, а при остановке контекста executors удаляются из Kubernetes
import os
import subprocess
import pyspark
os.environ["PYSPARK_PYTHON"]="python3"
os.environ["PYSPARK_DRIVER_PYTHON"]="python3"
result = subprocess.run(['minikube', 'ip'], stdout=subprocess.PIPE)
ip = result.stdout.decode('utf-8').rstrip()
master_ip="k8s://https://"+ip+":8443"
conf = pyspark.SparkConf()
conf.setMaster(master_ip)
conf.set("spark.kubernetes.container.image", "k8s-py/spark-py")
conf.set("spark.executor.instances", "5")
conf.set("spark.kubernetes.namespace", "default")
sc = pyspark.SparkContext(conf=conf)
sc.parallelize(range(0, 100000)).count()
sc.stop()