Сборка и запуск Kubernetes из исходников
Запуск и выполнение kubernetes локально на платформе, отличной от Linux, было бы невозможно без использования какой-либо формы виртуализации, например, VirtualBox или Vsphere. Но настроить виртуальную машину на вашем Mac или Windows тоже непросто. К счастью, Vagrant делает вещи намного проще. Это особенно полезно, если вы хотите внести свой вклад в Kubernetes с открытым исходным кодом.
В этом посте мы рассмотрим, как собрать и запустить Kubernetes локально, используя VirtualBox и Vagrant.
- Установить голанг и убедитесь, что ГОПУТ установлена среда.
- Установить Бродяга а также Виртуальный бокс.
- Выполните следующие команды, чтобы добавить поддержку общего доступа к файлам между хостом и гостевой ВМ.
$ vagrant plugin install vagrant-vbguest
- Клонируйте репозиторий kubernetes.
$ cd ${GOPATH}/src/k8s.io
$ git clone git@github.com:kubernetes/kubernetes.git
- Создайте Vagrantfile со следующим содержимым. Этот файл позволит vagrant создать виртуальную машину centos7 и установить golang, etcd, docker и совместно использовать исходный каталог Kubernetes между хостом и гостевой виртуальной машиной.
VM_USER = 'vagrant'
HOST_GOPATH = ENV['GOPATH']
HOST_KUBERNETES_DIR = HOST_GOPATH + '/src/k8s.io/kubernetes'
$install_go = <<-SCRIPT
curl -fsSLo go.tar.gz "
tar -C /usr/local -zxvf go.tar.gz
echo 'export PATH=${PATH}:/usr/local/go/bin' >> /home/${1}/.bash_profile
echo "export GOPATH=/home/${1}/go" >> /home/${1}/.bash_profile
SCRIPT
$install_docker = <<-SCRIPT
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo
yum install -y docker-ce docker-ce-cli containerd.io
usermod -a -G docker ${1}
systemctl start docker.service
SCRIPT
$install_etcd = <<-SCRIPT
curl -fsSL -o etcd.tar.gz --retry 3 --keepalive-time 2
tar -C /usr/local/bin -zxvf etcd.tar.gz --strip-components=1
SCRIPT
Vagrant.configure("2") do |config|
config.vm.box = 'centos/7'
config.vm.hostname="kubernetes"
config.vm.define 'kubernetes'
config.vm.provider "virtualbox" do |v|
v.name="kubernetes"
v.memory = 2048
v.cpus = 2
end
config.vm.synced_folder HOST_KUBERNETES_DIR, '/home/'+VM_USER+'/go/src/k8s.io/kubernetes', create: true, group: VM_USER, owner: VM_USER
config.vm.provision "shell" do |s|
s.inline = $install_go
s.args = [VM_USER]
end
config.vm.provision "shell" do |s|
s.inline = $install_docker
s.args = [VM_USER]
end
config.vm.provision "shell" do |s|
s.inline = $install_etcd
end
config.ssh.username = VM_USER
end
- Выполните следующую команду, чтобы запустить виртуальную машину.
$ vagrant up kubernetes
- Для сборки и запуска kubernetes внутри виртуальной машины.
$ vagrant ssh kubernetes
[vagrant@kubernetes ~]$ cd ${GOPATH}/src/k8s.io/kubernetes
[vagrant@kubernetes ~]$ bash hack/local-up-cluster.sh
- Откройте другой терминал в виртуальной машине, чтобы запустить развертывание nginx в kubernetes.
$ vagrant ssh kubernetes
[vagrant@kubernetes ~]$ cd ${GOPATH}/src/k8s.io/kubernetes
[vagrant@kubernetes ~]$ export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig
[vagrant@kubernetes ~]$ cluster/kubectl.sh create deployment nginx --image=nginx
- Вы можете открыть исходный код kubernetes в Visual Studio Code, установить необходимые необходимые инструменты для перехода. Внесите изменения в код и повторите шаг 5.