zoukankan      html  css  js  c++  java
  • 【kubernetes入门学习】使用minikube创建k8s本地单节点集群

    使用Minikube来运行kubernetes集群是最简单、快捷的途径。Minikube是一个构建单节点集群的工具,对于测试Kubernetes和本地开发应用都非常有用。

    官方教程:Install Minikube 

    github地址:官方minikube阿里云minikube  

    实验环境:VM环境中的CentOS7。

    一、准备工作

    由于是在虚拟机下演示,虚拟机需要启用虚拟化功能。可以先用以下命令检查是否支持虚拟化,输出非空说明支持。

    grep -E --color 'vmx|svm' /proc/cpuinfo

    Vmware默认是将虚拟化关闭的,需要手动将其打开。

    二、安装kubectl

    要与Kubernetes进行交互,需要由kubectl客户端。参考官方kubectl安装教程:Install and Set Up kubectl

    1.安装kubectl

    Linux下有三种安装方式,这里只记录CentOS下的步骤,其它操作系统见官方教程。

    ①使用二进制文件安装

    直接使用curl下载二进制文件,启动运行。我使用curl无法下载,直接在浏览器地址栏中输入链接手动下载。

    # 下载最新版k8s
    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
    # 下载指定版k8s
    curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.6.4/bin/linux/amd64/kubectl
    
    # 使kubectl可执行
    chmod +x ./kubectl
    
    # 将kubectl移动到可以全局访问的目录下
    sudo mv ./kubectl /usr/local/bin/kubectl
    
    # 在任意目录执行,验证安装
    kubectl version

    ②使用原生包管理器安装

    官方给的源地址无法下载,但只需修改成国内源,比如阿里源,就可以下载了。 

    使用阿里kubernetes镜像源下载

    Debian/Ubuntu

    #添加源
    apt-get update && apt-get install -y apt-transport-https
    
    curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    EOF
    
    #更新索引,安装
    apt-get update
    apt-get install -y kubelet kubeadm kubectl

    CentOS/RHEL/Fedora

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    setenforce 0
    yum install -y kubelet kubeadm kubectl

    这里会同时安装上kubelet,kubeadm和kubectl。安装完成后,检查是否安装成功

    kubectl version

    ③使用snap包管理器安装

    snap install kubectl --classic
    kubectl version --client

    2.配置kubectl

    为了kubectl发现和访问kubernetes集群,需要一个kubeconfig文件,该文件会在使用kube-up.sh创建集群时或者在成功部署Minikube集群时自动创建。默认情况下,kubectl配置文件在~/.kube/config目录下。

    #通过获取集群的状态,来检查kubectl是否成功配置。
    kubectl cluster-info

    如果收到了一个URL响应,说明配置合理,能够访问集群。否则,如果收到的响应类似如下信息,说明kubectl没有合理地进行配置,不能连接到kubernetes集群

    The connection to the server <server-name:port> was refused - did you specify the right host or port?

    例如,如果你打算在你的电脑本地环境运行kubernetes集群,你需要先安装一个如Minikube这样的工具,然后重新运行上面的命令。如果响应能返回一个url但不能访问集群,可以使用下面的命令检查一下是否配置正确。

    kubectl cluster-info dump

    配置shell自动完成

    可以通过以下命令来产生Bash下的kubectl自动完成脚本。在shell中source一下该自动完成脚本使自动完成功能生效。


    #使用该命令来产生Bash下的kubectl自动完成脚本 kubectl completion bash

    然而,自动完成脚本依赖于bash-completion,我们得先安装bash-completion。

    ①安装bash-completion

    先检测是否已经安装。

    type _init_completion

    如果检测未安装,则进行安装。安装会创建/usr/share/bash-completion/bash_completion脚本,这是bash-completion的核心脚本。

    #ubuntu
    apt-get install bash-completion
    #centos
    yum install bash-completion

    创建后需要在~/.bashrc文件中手动source下配置,这取决于包管理器是否需要这样做。

    可以使用以下方式来验证是否需要手动进行source配置。

    重启shell,然后运行下面命令,如果命令成功,说明已经设置好了。

    type _init_completion

    否则需要添加以下内容到~/.bashrc文件

    source /usr/share/bash-completion/bash_completion

    然后重启shell,然后再次使用type _init_completion命令验证bash-completion正确地进行了安装。

    ②启用kubectl autocompletion

    你需要确保在所有shell环境下kubectl 自动完成脚本都被source了,有两种方式。

    第一种方式:在~/.bashrc文件手动source自动完成脚本

    echo 'source <(kubectl completion bash)' >>~/.bashrc

    第二种方式:添加自动完成脚本到/etc/bash_completion.d目录下。

    注意:bash-completion会source  /etc/bash_completion.d目录下所有的自动完成脚本(bash-completion sources all completion scripts in /etc/bash_completion.d)

    kubectl completion bash >/etc/bash_completion.d/kubectl

    这两种方式是等价的。重新打开(reload)shell后,kubectl自动完成功能应该就可以使用了。

    三、安装minikube

    1.确定上面的kubectl已经安装好

    2.安装minikube

    官网:minikube start

    这里列举的是直接下载二进制可执行文件的方式。使用包管理器安装方式直接参考官方文档。

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

    但是,这里要访问google地址,很可能无法直接访问。可以参考:AliyunContainerService/minikube

    curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.18.1/minikube-linux-amd64
    chmod +x minikube
    sudo mv minikube /usr/local/bin/

    3.安装驱动

    官网:Drivers

    Linux下,官方推荐docker方式和KVM2虚拟机的方式。注意:minikube也支持--vm-driver=none可选参数的方式在主机上而非虚拟机中运行kubernetes组件。使用这个驱动选项要求docker和linux环境,而非hypervisor。

    (1)如果使用Docker方式

    直接使用minikube来启动集群时,指定docker方式就行了。

    #使用docker驱动来启动集群
    minikube start --driver=docker
    
    #将docker设置默认驱动
    minikube config set driver docker

    (2)如果使用kvm2方式

    需要先安装kvm2驱动,参考github上的教程

    下面记录我的安装过程:

    #先安装依赖libvirt 1.3.1 or higher和qemu-kvm
    Debian/Ubuntu 18.x: sudo apt install libvirt-clients libvirt-daemon-system qemu-kvm
    Ubuntu 16.x及之前版本: sudo apt install libvirt-bin libvirt-daemon-system qemu-kvm
    Fedora/CentOS/RHEL: sudo yum install libvirt-daemon-kvm qemu-kvm
    
    #检查已经安装的virsh版本
    virsh --version
    
    #安装docker-machine-driver-kvm2
    (如果virsh版本号>1.3.1,执行下面命令。如果小于该版本号,操作不同,看原文档。) 【如果下载不了,看底下的说明】
    curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 
      && sudo install docker-machine-driver-kvm2 /usr/local/bin/
    
    #开启,启动,验证libvirtd服务
    sudo systemctl enable libvirtd.service
    sudo systemctl start libvirtd.service
    sudo systemctl status libvirtd.service
    
    #将当前用户添加到组
    sudo usermod -a -G libvirt $(whoami)
    
    #将当前用户session加入到组
    newgrp libvirt
    
    

    说明:

    ①如果在下载docker-machine-driver-kvm2时下载不了,可以到这里下载:AUR for Arch Linux,然后手动安装。(我之前在ubuntu物理机下可以下载,但后来在虚拟机centos7中下载不了)

    ②我在检查virsh这一步提示没有该命令,执行下面命令解决了。

    #https://blog.csdn.net/weixin_37136725/article/details/78044272
    yum install qemu-kvm -y
    yum install libvirt -y
    yum install virt-install -y
    yum install bridge-utils -y

    4.启动minikube

    #启动minikube
    minikube start
    
    (docker方式)
    #使用docker驱动来启动
    minikube start --driver=docker
    #将docker设为默认驱动
    minikube config set driver docker
    
    (kvm2方式)
    #指定使用kvm2驱动方式启动
    minikube start --vm-driver kvm2
    #将kvm2设为默认驱动
    minikube config set vm-driver kvm2

    下面是使用kvm2方式启动的截图。说明:这个步骤需要等待较长时间,因为要下载一些文件,拉取镜像,所以需要耐性等待。

    下面是我后来在ubuntu下使用docker驱动方式启动的截图。

    集群启动之后,可以使用使用下面命令来查看集群是否正常工作

    kubectl cluster-info

    5.简单使用minikube和kubectl

    安装好了kubectl和minikube后,可以按照官方的可交互教程:Interactive Tutorial - Creating a Cluster来简单的使用一下。

    minikube version

    $ minikube version
    minikube version: v1.3.0
    commit: 43969594266d77b555a207b0f3e9b3fa1dc92b1f

    minikube start

    $ minikube start
    * minikube v1.3.0 on Ubuntu 18.04
    * Running on localhost (CPUs=2, Memory=2461MB, Disk=47990MB) ...
    * OS release is Ubuntu 18.04.2 LTS
    * Preparing Kubernetes v1.15.0 on Docker 18.09.5 ...
      - kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
    * Pulling images ...
    * Launching Kubernetes ...
    * Waiting for: apiserver proxy etcd scheduler controller dns
    * Done! kubectl is now configured to use "minikube"

    kubectl version

    $ kubectl version
    Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.2", GitCommit:"f6278300bebbb750328ac16ee6dd3aa7d3549568", GitTreeState:"clean", BuildDate:"2019-08-05T09:23:26Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:32:14Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

    kubectl cluster-info

    $ kubectl cluster-info
    Kubernetes master is running at https://172.17.0.23:8443
    KubeDNS is running at https://172.17.0.23:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

    kubectl get nodes

    $ kubectl get nodes
    NAME       STATUS   ROLES    AGE     VERSION
    minikube   Ready    master   3m17s   v1.15.0
    不积跬步,无以至千里。不积小流,无以成江海!
  • 相关阅读:
    (转)位置无关码、位置有关码
    【转载】PM为什么会存在?怎么存在?
    战略是什么?3-互联网产品行业以及竞争对手分析
    【转载】2014,要格外留意这7大投资机会——哈继铭 {key:人口红利、房价、社会结构、贸易逆差}
    2014年书单-30本
    产品经理要树立战略意识——战略是什么2(谈国家限制支付宝的战略分析)
    产品经理要树立战略意识——战略是什么1
    【转载】产品经理入门案例分析——锤子手机策略
    javascript设计模式-工厂模式
    javascript设计模式-单例模式
  • 原文地址:https://www.cnblogs.com/rouqinglangzi/p/10853998.html
Copyright © 2011-2022 走看看