使用Minikube来运行kubernetes集群是最简单、快捷的途径。Minikube是一个构建单节点集群的工具,对于测试Kubernetes和本地开发应用都非常有用。官方安装minikube教程请参考:Install Minikube  (github地址)

实验环境:VM中的CentOS7

一、安装前的准备工作

检查是否支持虚拟化,输出非空说明支持。

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

注意:如果是在虚拟机中操作,比如Vmware,则Vmware默认是将虚拟化关闭的,需要手动将其打开。

二、安装kubectl

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

1.安装kubectl

Linux下有三种安装方式,其它操作系统请见官方教程。

①使用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=
gpgcheck=
repo_gpgcheck=
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce
yum install -y kubelet kubeadm kubectl

这里会同时安装上kubelet,kubeadm和kubectl。

安装完成后,检查是否安装成功

kubectl version

③使用snap包管理器安装

不再赘述,只是包管理器不同而已,与第②种差不多。

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.安装虚拟机驱动(官网称为Hypervisor)

对于Linux,选择安装VirtualBoxKVM之一即可(github上推荐使用kvm)

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

如果安装virtualBox驱动(注意版本以保证与系统的兼容性)

#下载源
cd /etc/yum.repos.d/
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo #安装(注意,我的centos7在安装6.0版本会不兼容。)
yum install VirtualBox-6.0

如果安装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

3.完成了上面的步骤。接下来,就可以安装minikube了。

安装minikube也不止一种方式,kubenetes官网文档中列举的是直接下载静态二进制的方式来安装minikube的。这里要直接访问google地址,很可能无法直接访问。

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

当然,我们也可以使用阿里云提供的修改版的minikube (教程地址)。下载后将其放入/usr/local/bin目录(阿里云镜像地址)

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

4.安装完成后,就可以启动minikube了。

#启动minikube,默认使用virtualBox。
minikube start #启动minikube,指定使用kvm2驱动,而非virtualbox
minikube start --vm-driver kvm2 #或者可以将kvm2设为minikube启动时的默认驱动
minikube config set vm-driver kvm2

说明:我在启动minikube时,控制台显示Configuring environment for Kubernetes v1.14.3 on Docker 18.09.6,等待了较长时间,我还以为卡死了,后来才动起来了,又开始下载kubeadm,最后开始拉取镜像。需要耐性等待。

查看集群是否正常工作,使用kubectl cluster-info命令来查看。

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=, Memory=2461MB, Disk=47990MB) ...
* OS release is Ubuntu 18.04. LTS
* Preparing Kubernetes v1.15.0 on Docker 18.09. ...
- 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:"", Minor:"", 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:"", Minor:"", 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

kubernetes之二 使用minikube创建单节点k8s本地集群的更多相关文章

  1. kafka系列一:单节点伪分布式集群搭建

    Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...

  2. Hadoop 单节点(或集群)基本配置信息

    1. 默认配置文件: 存放于Hadoop对应的jar包中 core-default.xml hdfs-default.xml yarn-default.xml mapred-default.xml 2 ...

  3. 使用Docker方式创建3节点的Etcd集群

    一.简要说明 二.运行容器 三.验证集群 四.运行截图 五.参考链接 一.简要说明     参考etcd官网文档, 在node1.node2.node3三个节点上,分别运行etcd容器,创建etcd集 ...

  4. 单节点伪分布集群(weekend110)的HBase子项目启动顺序

    伪分布模式下,如(weekend110)hbase-env.sh配置文档中的HBASE_MANAGES_ZK的默认值是true,它表示HBase使用自身自带的Zookeeper实例.但是,该实例只能为 ...

  5. AWS上创建EKS(K8S)集群

    1.注意事项及准备工作 EKS分为EKS Master和EKS Node两种角色;EKS Master为全托管,EKS Node为CloudFormation创建 EKS Node若在NAT网络里,一 ...

  6. 单节点伪分布集群(weekend110)的Hive子项目启动顺序

    因为,我的mysql是用root用户,在/home/hadoop/app/目录下,创建的. 第一步:开启mysql服务 第二步:启动hive [hadoop@weekend110 app]$ su r ...

  7. 在Ubuntu14.10中部署Hadoop2.6.0单节点伪分布集群

    1. 环境信息如下: ubuntu:14.10 jdk:openjdk-1.7.0 hadoop:2.6.0 2. 下载hadoop2.6.0, http://apache.fayea.com/had ...

  8. Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)

    0. 前言 最近受“新冠肺炎”疫情影响,在家等着,入职暂时延后,在家里办公和学习 尝试通过源码编译二进制的方式在单一节点(Master 与 Node 部署在同一个机器上)上部署一个 k8s 环境,整理 ...

  9. Kubernetes(k8s) docker集群搭建

    原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇   •Kubernetes介绍 1.背 ...

随机推荐

  1. nf_conntrack: table full, dropping packet解决方法

    https://blog.csdn.net/yanggd1987/article/details/45886913

  2. hypermesh中怎么设置支反力(反作用力)

    Analysis page >> Control cards >> Global output request 勾选 SPCF 和 GPFORCE .

  3. Apache2.4常用编译参数

    转载文章,亲试 Apache2.4以后的版本编译依赖apr,所以,编译之前需要先安装apr及apr-util. 编译参数只是一个参考作用,这个参数是我平常使用的,具体工作中的需求还是要区别对待的 一些 ...

  4. 模拟赛DAY1 T2腐草为萤

    2.腐草为萤(dzy.cpp/c) [题目背景] 纤弱的淤泥中妖冶颓废在季夏第三月最幼嫩的新叶连凋零都不屑何必生离死别——银临<腐草为萤> [问题描述] 扶苏给了你一棵树,这棵树上长满了幼 ...

  5. 【转】Python3中遇到UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128)

    [转]Python3中遇到UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128) ...

  6. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_3_转换流的原理

    FileReader源码的构造方法.底层使用FileInputStram读取 编码不一样占用的字节大小也不一样.GBK一个汉字占用 2个字节. utf-8一个汉字占用三个字节 转换流InputStre ...

  7. string与wstring的互相转换接口(Windows版本)

    string与wstring的互相转换接口(Windows版本) std::wstring stringToWstring( const std::string & str ) { LPCST ...

  8. 搭建 Git 服务器(基于 CentOS 7)

    服务器上的-Git-架设服务器-官网参考 对于规模比较小的团队,可以直接搭建 Git 服务器,逐个收集研发同学的证书配置进来即可.如果团队规模比较大,可以直接采用 GitLab.Drone 等现成的带 ...

  9. php-fpm启动不起来,php-fpm无法启动的一种情况

    今天碰了一个很奇怪的问题,平时好好的php-fpm修改了一个参数后,突然启动不起来了,试着把参数还原.甚至用备份的配置文件还原都没办法启动php,而且不给任务启动错误的提示,纳闷!!!后来上网找了个资 ...

  10. 学习《Oracle PL/SQL 实例讲解 原书第5版》---创建student schema

    接上篇,运行脚本createStudent.sql后结果不符. 又运行了一遍rebuildStudent.sql就好了. 图: 原来是这样的,还以为是语言问题: 额,本来是打算截图的.但是发现没问题了 ...