作为开发人员,我想使用kubeadm自动启动本地Kubernetes开发环境。我希望创建一个“无所事事”的环境,此后,我必须能够登录到Vagrant VM并运行kubectl命令。
我想包含一个简单的Python脚本,该脚本列出所有名称空间中所有正在运行的Pod。在“无用或配置”过程结束时调用此脚本以验证Kubernetes的安装。
最后我想将脚本上传到GitHub。
我有一个bootstrap脚本,从我的Vagrantfile调用,例如:
config.vm.provision :shell, path:./bootstrap.sh, privileged: false, :args => arguments_for_bootstrap
在这种引导脚本中,我安装了运行kubernetes程序所需的软件。因为这是一台无所事事的机器,所以我建议使用独立的minikube“集群”。如果将docker技术用于容器,我会安装例如docker,kubectl和minikube,可能还会安装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脚本:
,您只需授予+ x许可就可以启用/禁用它:kubectl get pod --all-namespaces
提供预配任务的最佳方法是使用scriptlets
@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以特定的顺序执行操作:
帐户,重新创建开发环境所需的所有脚本将是您的Vagrantfile,bootstrap.sh脚本和带有 scriptlet来完成您考虑对vagrant up。]执行的所有步骤。provision.d/K01_helm_install_my_app ... provision.d/K30_check_k8s_health
关于您的第三个问题,我假设拥有一个github