minikube國內在線部署體驗


問題描述:

快速學習k8s的各個組件的作用及yml的編寫,minikube很適合。

how to install Minikube, a tool that runs a single-node Kubernetes cluster in a virtual machine on your personal computer

 參考文檔:

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

https://minikube.sigs.k8s.io/docs/start/linux/

https://github.com/kubernetes/minikube

實驗環境:

ubuntu16.04 LTS

2C4G,在線環境

virtualbox虛擬化的形式部署

01、檢查是否支持虛擬化

grep -E --color 'vmx|svm' /proc/cpuinfo    //注意不支持則不能繼續安裝

02、Install kubectl

#binary
https://github.com/kubernetes/kubectl/releases   //源碼需要編譯

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.16.0/bin/linux/amd64/kubectl

chmod +x ./kubectl

sudo  mv ./kubectl /usr/local/bin/kubectl
kubectl version          //檢查是否可以直接執行

03、Install a Hypervisor

VirtualBox    //如果沒配置國內mirror請參考  https://opsx.alibaba.com/mirror

user@slave:~$ sudo apt show virtualbox
Package: virtualbox
Version: 5.1.38-dfsg-0ubuntu1.16.04.3
Priority: optional
Section: multiverse/misc
Origin: Ubuntu

sudo apt install -y virtualbox      //執行安裝virtualbox到ubuntu中

04、啟動minikube

###下載minikube文件

https://github.com/kubernetes/minikube/releases

https://github.com/kubernetes/minikube/releases/download/v1.4.0/minikube-linux-amd64 //Kubernetes version to v1.16.0

chmod +x minikube

sudo mv minikube /usr/local/bin

注意:minikube在虛擬化中啟動,不能用root賬戶啟動

minikube --help   //查看命令參數

user@slave:~$ minikube --help
Minikube is a CLI tool that provisions and manages single-node Kubernetes clusters optimized for development workflows.

Basic Commands:
 start Starts a local kubernetes cluster //啟動本地虛擬化/主機的k8s單節點   status         Gets the status of a local kubernetes cluster
  stop           Stops a running local kubernetes cluster
 delete Deletes a local kubernetes cluster  dashboard Access the kubernetes dashboard running within the minikube cluster 
Images Commands:
  docker-env     Sets up docker env variables; similar to '$(docker-machine env)'
  cache          Add or delete an image from the local cache.

Configuration and Management Commands:
  addons         Modify minikube's kubernetes addons
  config         Modify minikube config
  profile        Profile gets or sets the current minikube profile
  update-context Verify the IP address of the running cluster in kubeconfig.

Networking and Connectivity Commands:
  service        Gets the kubernetes URL(s) for the specified service in your local cluster
  tunnel         tunnel makes services of type LoadBalancer accessible on localhost

Advanced Commands:
  mount          Mounts the specified directory into minikube
  ssh            Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'
  kubectl        Run kubectl

Troubleshooting Commands:
  ssh-key        Retrieve the ssh identity key path of the specified cluster
  ip             Retrieves the IP address of the running cluster
 logs Gets the logs of the running instance, used for debugging minikube, not user code.   update-check   Print current and latest version number
  version        Print the version of minikube

Other Commands:
  completion     Outputs minikube shell completion for the given shell (bash or zsh)

Use "minikube <command> --help" for more information about a given command.

minikube start --help   //很重要啟動參數

user@slave:~$ minikube start --help
Starts a local kubernetes cluster

Options:
      --apiserver-ips=[]: A set of apiserver IP Addresses which are used in the generated certificate for kubernetes.
This can be used if you want to make the apiserver available from outside the machine
      --apiserver-name='minikubeCA': The apiserver name which is used in the generated certificate for kubernetes.  This
can be used if you want to make the apiserver available from outside the machine
      --apiserver-names=[]: A set of apiserver names which are used in the generated certificate for kubernetes.  This
can be used if you want to make the apiserver available from outside the machine
      --apiserver-port=8443: The apiserver listening port
      --cache-images=true: If true, cache docker images for the current bootstrapper and load them into the machine.
Always false with --vm-driver=none.
      --container-runtime='docker': The container runtime to be used (docker, crio, containerd).
      --cpus=2: Number of CPUs allocated to the minikube VM. //最低的,CPU2個 --cri-socket='': The cri socket path to be used.
      --disable-driver-mounts=false: Disables the filesystem mounts provided by the hypervisors
      --disk-size='20000mb': Disk size allocated to the minikube VM (format: <number>[<unit>], where unit = b, k, m or g). //磁盤大小 --dns-domain='cluster.local': The cluster dns domain name used in the kubernetes cluster
      --dns-proxy=false: Enable proxy for NAT DNS requests (virtualbox driver only)
      --docker-env=[]: Environment variables to pass to the Docker daemon. (format: key=value)
      --docker-opt=[]: Specify arbitrary flags to pass to the Docker daemon. (format: key=value)
      --download-only=false: If true, only download and cache files for later use - don't install or start anything.
      --embed-certs=false: if true, will embed the certs in kubeconfig.
      --enable-default-cni=false: Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with
"--network-plugin=cni".
      --extra-config=: A set of key=value pairs that describe configuration that may be passed to different components.
        The key should be '.' separated, and the first part before the dot is the component to apply the configurat
ion to.        Valid components are: kubelet, kubeadm, apiserver, controller-manager, etcd, proxy, scheduler
        Valid kubeadm parameters: ignore-preflight-errors, dry-run, kubeconfig, kubeconfig-dir, node-name, cri-sock
et,experimental-upload-certs, certificate-key, rootfs, pod-network-cidr
      --feature-gates='': A set of key=value pairs that describe feature gates for alpha/experimental features.
      --force=false: Force minikube to perform possibly dangerous operations
      --host-dns-resolver=true: Enable host resolver for NAT DNS requests (virtualbox driver only)
      --host-only-cidr='192.168.99.1/24': The CIDR to be used for the minikube VM (virtualbox driver only)
      --hyperkit-vpnkit-sock='': Location of the VPNKit socket used for networking. If empty, disables Hyperkit
VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)
      --hyperkit-vsock-ports=[]: List of guest VSock ports that should be exposed as sockets on the host (hyperkit
driver only)
      --hyperv-virtual-switch='': The hyperv virtual switch name. Defaults to first found. (hyperv driver only)
      --image-mirror-country='': Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn. --image-repository='': Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to "auto" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers --insecure-registry=[]: Insecure Docker registries to pass to the Docker daemon.  The default service CIDR range
will automatically be added.
      --interactive=true: Allow user prompts for more information
      --iso-url='https://storage.googleapis.com/minikube/iso/minikube-v1.4.0.iso': Location of the minikube iso. --keep-context=false: This will keep the existing kubectl context and will create a minikube context.
      --kubernetes-version='v1.16.0': The kubernetes version that the minikube VM will use (ex: v1.2.3) --kvm-gpu=false: Enable experimental NVIDIA GPU support in minikube
      --kvm-hidden=false: Hide the hypervisor signature from the guest in minikube (kvm2 driver only)
      --kvm-network='default': The KVM network name. (kvm2 driver only)
      --kvm-qemu-uri='qemu:///system': The KVM QEMU connection URI. (kvm2 driver only)
      --memory='2000mb': Amount of RAM allocated to the minikube VM (format: <number>[<unit>], where unit = b, k, m or g). --mount=false: This will start the mount daemon and automatically mount files into minikube.
      --mount-string='/home/user:/minikube-host': The argument to pass the minikube mount command on start.
      --native-ssh=true: Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh'
command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for
SSH'.
      --network-plugin='': The name of the network plugin.
      --nfs-share=[]: Local folders to share with Guest via NFS mounts (hyperkit driver only)
      --nfs-shares-root='/nfsshares': Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)
      --no-vtx-check=false: Disable checking for the availability of hardware virtualization before the vm is started
(virtualbox driver only)
      --registry-mirror=[]: Registry mirrors to pass to the Docker daemon
      --service-cluster-ip-range='10.96.0.0/12': The CIDR to be used for service cluster IPs.
      --uuid='': Provide VM UUID to restore MAC address (hyperkit driver only)
      --vm-driver='': Driver is one of: [virtualbox parallels vmwarefusion kvm2 vmware none] (defaults to virtualbox) --wait=true: Wait until Kubernetes core services are healthy before exiting.
      --wait-timeout=6m0s: max time to wait per Kubernetes core services to be healthy.

Usage:
  minikube start [flags] [options]

Use "minikube start options" for a list of global command-line options (applies to all commands).
user@slave:~$ 

minikube start  --cpus=2 --disk-size='10g' --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'     

//國內阿里的google容器源,實話阿里很給力對於國內的有需求的

user@slave:~$ minikube start --disk-size='10g' --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyun
cs.com/google_containers'* minikube v1.4.0 on Ubuntu 16.04
* Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
* Creating virtualbox VM (CPUs=2, Memory=2000MB, Disk=10000MB) ...
* Preparing Kubernetes v1.16.0 on Docker 18.09.9 ...
* Pulling images ...
* Launching Kubernetes ... 
* Waiting for: apiserver proxy etcd scheduler controller dns
* Done! kubectl is now configured to use "minikube"
* For best results, install kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl/
user@slave:~$ 
user@slave:~$ 
user@slave:~$ minikube status 
host: Running
kubelet: Running
apiserver: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100

 05、測試k8s

user@slave:~$ kubectl get pods -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-67c766df46-59rtb           1/1     Running   0          17m
kube-system   coredns-67c766df46-jxmvf           1/1     Running   0          17m
kube-system   etcd-minikube                      1/1     Running   0          16m
kube-system   kube-addon-manager-minikube        1/1     Running   0          16m
kube-system   kube-apiserver-minikube            1/1     Running   0          16m
kube-system   kube-controller-manager-minikube   1/1     Running   0          17m
kube-system   kube-proxy-ljppw                   1/1     Running   0          17m
kube-system   kube-scheduler-minikube            1/1     Running   0          16m
kube-system   storage-provisioner                1/1     Running   0          17m
user@slave:~$ 
user@slave:~$ 
user@slave:~$ kubectl get nodes
NAME       STATUS   ROLES    AGE   VERSION
minikube   Ready    master   18m   v1.16.0
user@slave:~$ 
user@slave:~$ kubectl get namespaces
NAME              STATUS   AGE
default           Active   18m
kube-node-lease   Active   18m
kube-public       Active   18m
kube-system       Active   18m


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM