【问题标题】:How to launch a local Kubernetes With Vagrant如何使用 Vagrant 启动本地 Kubernetes
【发布时间】:2020-03-06 13:46:41
【问题描述】:

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

我想包含一个简单的 Python 脚本,列出所有命名空间中所有正在运行的 pod。在“vagrant up or provision”过程结束时调用此脚本以验证 Kubernetes 安装。

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

【问题讨论】:

    标签: python kubernetes namespaces vagrant kubeadm


    【解决方案1】:

    我拥有的是从我的 Vagrantfile 调用的 bootstrap 脚本,例如:

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

    在这样的引导脚本中,我安装了运行 kubernetes 所需的软件。由于这是一台流浪机器,我建议独立的 minikube “集群”。如果对容器使用 docker 技术,我会安装,例如 dockerkubectlminikube,可能还有一些类似 的东西helm 编排器等

    例如:

    ### 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 for 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 脚本和provision.d 目录,其中包含 scriptlets,用于执行您考虑在 vagrant up 上执行的所有步骤。

    【讨论】:

      猜你喜欢
      • 2019-07-29
      • 2016-02-10
      • 2016-06-11
      • 1970-01-01
      • 2021-10-16
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多