如何使用流浪汉启动本地Kubernetes

问题描述 投票:0回答:1

作为开发人员,我想使用kubeadm自动启动本地Kubernetes开发环境。我希望创建一个“无所事事”的环境,此后,我必须能够登录到Vagrant VM并运行kubectl命令。

我想包含一个简单的Python脚本,该脚本列出所有名称空间中所有正在运行的Pod。在“无用或配置”过程结束时调用此脚本以验证Kubernetes的安装。

最后我想将脚本上传到GitHub。

python kubernetes namespaces vagrant kubeadm
1个回答
0
投票

我有一个bootstrap脚本,从我的Vagrantfile调用,例如:

config.vm.provision :shell, path:./bootstrap.sh, privileged: false, :args => arguments_for_bootstrap

在这种引导脚本中,我安装了运行kubernetes程序所需的软件。因为这是一台无所事事的机器,所以我建议使用独立的minikube“集群”。如果将docker技术用于容器,我会安装例如dockerkubectlminikube,可能还会安装helm Orchestrator等其他东西。>

例如:

### DOCKER ###
sudo apt-get update
# Install packages to allow apt to use a repository over HTTPS
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# Add Dockers official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Set up the stable repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Update
sudo apt-get update
# Install docker-ce
sudo apt-get install -y docker-ce=18.06.3~ce~3-0~ubuntu
# Add user to group 'docker'
sudo usermod -aG docker $USER

### KUBECTL ###
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.14.8/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

### MINIKUBE ###
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.4.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
# Start
sudo minikube start --vm-driver=none
# Configure permissions
[ -d /root/.kube ] && sudo mv /root/.kube $HOME/.kube # this will write over any previous configuration
sudo chown -R $USER $HOME/.kube
sudo chgrp -R $USER $HOME/.kube
[ -d /root/.minikube ] && sudo mv /root/.minikube $HOME/.minikube # this will write over any previous configuration
sudo chown -R $USER $HOME/.minikube
sudo chgrp -R $USER $HOME/.minikube

最后,我将添加配置脚本以执行所需的任何检查。如果您更喜欢python脚本,则可以将kubectl api用于python(即https://github.com/kubernetes-client/python),但我建议直接使用bash脚本:

kubectl get pod --all-namespaces 

提供预配任务的最佳方法是使用scriptlets

,您只需授予+ x许可就可以启用/禁用它:
    @files = Dir.glob(provision.d + "/*").sort
    @files.each do |file|
      next if file == '.' or file == '..'
      next if not File.stat(file).executable?
      config.vm.provision :shell, path:file, privileged: false
    end

然后,您将在本地拥有一堆scriptlet以特定的顺序执行操作:

provision.d/K01_helm_install_my_app
...
provision.d/K30_check_k8s_health

关于您的第三个问题,我假设拥有一个github

帐户,重新创建开发环境所需的所有脚本将是您的Vagrantfile,bootstrap.sh脚本和带有 scriptlet来完成您考虑对vagrant up。]执行的所有步骤。
© www.soinside.com 2019 - 2024. All rights reserved.