• 1. 安装kubectl
  • 2. 安装minikube
    • 2.1 安装minikube
    • 2.2 minikube命令帮助
  • 3. 使用minikube安装k8s集群
    • 3.1. minikube start
    • 3.2. minikube status
    • 3.3. minikube stop
    • 3.4. minikube delete
  • 4. 查看部署结果
    • 4.1. 部署组件
    • 4.2. dashboard
  • 5. troubleshooting
    • 5.1. 没有安装VirtualBox
    • 5.2. 没有安装Docker

    以下内容基于Linux系统,特别为Ubuntu系统

    1. 安装kubectl

    1. curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

    下载指定版本,例如下载v1.9.0版本

    1. curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.9.0/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

    2. 安装minikube

    minikube的源码地址:https://github.com/kubernetes/minikube

    2.1 安装minikube

    以下命令为安装latest版本的minikube

    1. curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

    安装指定版本可到https://github.com/kubernetes/minikube/releases下载对应版本。

    例如:以下为安装v0.28.2版本

    1. curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.28.2/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

    2.2 minikube命令帮助

    1. Minikube is a CLI tool that provisions and manages single-node Kubernetes clusters optimized for development workflows.
    2. Usage:
    3. minikube [command]
    4. Available Commands:
    5. addons Modify minikube's kubernetes addons
    6. cache Add or delete an image from the local cache.
    7. completion Outputs minikube shell completion for the given shell (bash or zsh)
    8. config Modify minikube config
    9. dashboard Opens/displays the kubernetes dashboard URL for your local cluster
    10. delete Deletes a local kubernetes cluster
    11. docker-env Sets up docker env variables; similar to '$(docker-machine env)'
    12. get-k8s-versions Gets the list of Kubernetes versions available for minikube when using the localkube bootstrapper
    13. ip Retrieves the IP address of the running cluster
    14. logs Gets the logs of the running localkube instance, used for debugging minikube, not user code
    15. mount Mounts the specified directory into minikube
    16. profile Profile sets the current minikube profile
    17. service Gets the kubernetes URL(s) for the specified service in your local cluster
    18. ssh Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'
    19. ssh-key Retrieve the ssh identity key path of the specified cluster
    20. start Starts a local kubernetes cluster
    21. status Gets the status of a local kubernetes cluster
    22. stop Stops a running local kubernetes cluster
    23. update-check Print current and latest version number
    24. update-context Verify the IP address of the running cluster in kubeconfig.
    25. version Print the version of minikube
    26. Flags:
    27. --alsologtostderr log to standard error as well as files
    28. -b, --bootstrapper string The name of the cluster bootstrapper that will set up the kubernetes cluster. (default "localkube")
    29. --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0)
    30. --log_dir string If non-empty, write log files in this directory
    31. --loglevel int Log level (0 = DEBUG, 5 = FATAL) (default 1)
    32. --logtostderr log to standard error instead of files
    33. -p, --profile string The name of the minikube VM being used.
    34. This can be modified to allow for multiple minikube instances to be run independently (default "minikube")
    35. --stderrthreshold severity logs at or above this threshold go to stderr (default 2)
    36. -v, --v Level log level for V logs
    37. --vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging
    38. Use "minikube [command] --help" for more information about a command.

    3. 使用minikube安装k8s集群

    3.1. minikube start

    可以以Docker的方式运行k8s的组件,但需要先安装Docker(可参考Docker安装),启动参数使用--vm-driver=none

    1. minikube start --vm-driver=none

    例如:

    1. root@ubuntu:~# minikube start --vm-driver=none
    2. Starting local Kubernetes v1.10.0 cluster...
    3. Starting VM...
    4. Getting VM IP address...
    5. Moving files into cluster...
    6. Downloading kubeadm v1.10.0
    7. Downloading kubelet v1.10.0
    8. ^[[DFinished Downloading kubelet v1.10.0
    9. Finished Downloading kubeadm v1.10.0
    10. Setting up certs...
    11. Connecting to cluster...
    12. Setting up kubeconfig...
    13. Starting cluster components...
    14. Kubectl is now configured to use the cluster.
    15. ===================
    16. WARNING: IT IS RECOMMENDED NOT TO RUN THE NONE DRIVER ON PERSONAL WORKSTATIONS
    17. The 'none' driver will run an insecure kubernetes apiserver as root that may leave the host vulnerable to CSRF attacks
    18. When using the none driver, the kubectl config and credentials generated will be root owned and will appear in the root home directory.
    19. You will need to move the files to the appropriate location and then set the correct permissions. An example of this is below:
    20. sudo mv /root/.kube $HOME/.kube # this will write over any previous configuration
    21. sudo chown -R $USER $HOME/.kube
    22. sudo chgrp -R $USER $HOME/.kube
    23. sudo mv /root/.minikube $HOME/.minikube # this will write over any previous configuration
    24. sudo chown -R $USER $HOME/.minikube
    25. sudo chgrp -R $USER $HOME/.minikube
    26. This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
    27. Loading cached images from config file.

    安装指定版本的kubernetes集群

    1. # 查阅版本
    2. minikube get-k8s-versions
    3. # 选择版本启动
    4. minikube start --kubernetes-version v1.7.3 --vm-driver=none

    3.2. minikube status

    1. $ minikube status
    2. minikube: Running
    3. cluster: Running
    4. kubectl: Correctly Configured: pointing to minikube-vm at 172.16.94.139

    3.3. minikube stop

    minikube stop 命令可以用来停止集群。 该命令会关闭 minikube 虚拟机,但将保留所有集群状态和数据。 再次启动集群将恢复到之前的状态。

    3.4. minikube delete

    minikube delete 命令可以用来删除集群。 该命令将关闭并删除 minikube 虚拟机。没有数据或状态会被保存下来。

    4. 查看部署结果

    4.1. 部署组件

    1. root@ubuntu:~# kubectl get all --namespace=kube-system
    2. NAME READY STATUS RESTARTS AGE
    3. pod/etcd-minikube 1/1 Running 0 38m
    4. pod/kube-addon-manager-minikube 1/1 Running 0 38m
    5. pod/kube-apiserver-minikube 1/1 Running 1 39m
    6. pod/kube-controller-manager-minikube 1/1 Running 0 38m
    7. pod/kube-dns-86f4d74b45-bdfnx 3/3 Running 0 38m
    8. pod/kube-proxy-dqdvg 1/1 Running 0 38m
    9. pod/kube-scheduler-minikube 1/1 Running 0 38m
    10. pod/kubernetes-dashboard-5498ccf677-c2gnh 1/1 Running 0 38m
    11. pod/storage-provisioner 1/1 Running 0 38m
    12. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    13. service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 38m
    14. service/kubernetes-dashboard NodePort 10.104.48.227 <none> 80:30000/TCP 38m
    15. NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
    16. daemonset.apps/kube-proxy 1 1 1 1 1 <none> 38m
    17. NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
    18. deployment.apps/kube-dns 1 1 1 1 38m
    19. deployment.apps/kubernetes-dashboard 1 1 1 1 38m
    20. NAME DESIRED CURRENT READY AGE
    21. replicaset.apps/kube-dns-86f4d74b45 1 1 1 38m
    22. replicaset.apps/kubernetes-dashboard-5498ccf677 1 1 1 38m

    4.2. dashboard

    通过访问ip:port,例如:http://172.16.94.139:30000/,可以访问k8s的`dashboard`控制台。

    使用minikube安装kubernetes - 图1

    5. troubleshooting

    5.1. 没有安装VirtualBox

    1. [root@minikube ~]# minikube start
    2. Starting local Kubernetes v1.10.0 cluster...
    3. Starting VM...
    4. Downloading Minikube ISO
    5. 160.27 MB / 160.27 MB [============================================] 100.00% 0s
    6. E0727 15:47:08.655647 9407 start.go:174] Error starting host: Error creating host: Error executing step: Running precreate checks.
    7. : VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path.
    8. Retrying.
    9. E0727 15:47:08.656994 9407 start.go:180] Error starting host: Error creating host: Error executing step: Running precreate checks.
    10. : VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path
    11. ================================================================================
    12. An error has occurred. Would you like to opt in to sending anonymized crash
    13. information to minikube to help prevent future errors?
    14. To opt out of these messages, run the command:
    15. minikube config set WantReportErrorPrompt false
    16. ================================================================================
    17. Please enter your response [Y/n]:

    解决方法,先安装VirtualBox。

    5.2. 没有安装Docker

    1. [root@minikube ~]# minikube start --vm-driver=none
    2. Starting local Kubernetes v1.10.0 cluster...
    3. Starting VM...
    4. E0727 15:56:54.936706 9441 start.go:174] Error starting host: Error creating host: Error executing step: Running precreate checks.
    5. : docker cannot be found on the path for this machine. A docker installation is a requirement for using the none driver: exec: "docker": executable file not found in $PATH.
    6. Retrying.
    7. E0727 15:56:54.938930 9441 start.go:180] Error starting host: Error creating host: Error executing step: Running precreate checks.
    8. : docker cannot be found on the path for this machine. A docker installation is a requirement for using the none driver: exec: "docker": executable file not found in $PATH

    解决方法,先安装Docker。

    文章参考:

    https://github.com/kubernetes/minikube

    https://kubernetes.io/docs/setup/minikube/

    https://kubernetes.io/docs/tasks/tools/install-minikube/

    https://kubernetes.io/docs/tasks/tools/install-kubectl/