• docker版本:20.10.5
  • kubectl版本:1.20.5
  • minikube版本:1.17.1
  • centos版本:7.9
  • kubernates版本信息:minikube默认安装最新的k8s,有一些低版本的应用,比如spark需要注意版本兼容

1.yum安装Docker

  1. # step 0: 更新yum源
  2. sudo yum update
  3. # step 1: 安装必要的一些系统工具
  4. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  5. # Step 2: 添加软件源信息
  6. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  7. # Step 3: 更新并安装 Docker-CE
  8. sudo yum -y install docker-ce
  9. # Step 4: 开启Docker服务
  10. sudo systemctl start docker.service
  11. # Step 5: 开启开机自启
  12. sudo systemctl enable docker

配置阿里云镜像地址:修改或创建 /etc/docker/daemon.json 文件

  1. {
  2. "registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
  3. }

2.kubectl工具安装

kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。使用 curl 命令下载 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

在浏览器上输入 https://storage.googleapis.com/kubernetes-release/release/stable.txt,会返回版本信息,比如 v1.20.5,修改URL地址后进行下载:

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

查看 kubectl 工具版本信息:
image.png


3.minikube在线安装

  • Minikube是由Kubernetes社区维护的单机版的Kubernetes集群,详细见 minikube使用文档

    3.1 安装命令:

    1. curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.17.1/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

    3.2 启动minikube时报错处理

    启动命令:

    1. # 通过安装 KVM 或 VirtualBox 等工具,Minikube 可以创建虚拟机并在上面安装运行程序,如果不安装 Hypervisor 那 Minikube 就在本机上安装运行程序
    2. # 在启动命令后也需要加上 --driver 参数
    3. minikube start --driver=none
  • 报错一:Sorry, Kubernetes 1.20.2 requires conntrack to be installed in root’s path

  • 处理方式:yum install -y conntrack
  • 报错二:/proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
  • 处理方式:echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
  • 报错三:This bare metal machine is having trouble accessing https://k8s.gcr.io
  • 处理方式:在启动命令中添加国内镜像源信息

修改后的启动命令(指定k8s的安装版本,minikube默认安装最新的):

  1. [root@master bin]# minikube start --driver=none --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version="v1.15.3"
  2. * minikube v1.17.1 on Centos 7.9.2009
  3. * Using the none driver based on existing profile
  4. * Starting control plane node minikube in cluster minikube
  5. * Restarting existing none bare metal machine for "minikube" ...
  6. * OS release is CentOS Linux 7 (Core)
  7. * Preparing Kubernetes v1.20.2 on Docker 20.10.5 ...
  8. * ......

查看 minikube 的状态:

  1. [root@master bin]# minikube status
  2. minikube
  3. type: Control Plane
  4. host: Running
  5. kubelet: Running
  6. apiserver: Running
  7. kubeconfig: Configured

查看kubernates集群的健康状态:

  1. [root@control-plane conf]# kubectl get cs
  2. Warning: v1 ComponentStatus is deprecated in v1.19+
  3. NAME STATUS MESSAGE ERROR
  4. controller-manager Healthy ok
  5. scheduler Healthy ok
  6. etcd-0 Healthy {"health":"true"}

查看启动后的 kubernetes 集群信息:

  1. [root@master bin]# kubectl cluster-info
  2. Kubernetes control plane is running at https://10.0.10.80:8443
  3. KubeDNS is running at https://10.0.10.80:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

4.minikube使用

4.1 minikube集群管理命令(更多命令见 minikube —help)

  • 暂停Kubernetes,而不会影响已部署的应用程序:minikube pause
  • 停止集群:minikube stop
  • 增加默认内存限制(需要重新启动):minikube config set memory 16384
  • 删除minikube集群, --all 所有的:minikube delete [—all]
  • 创建第二个基于v1.16.1版本的k8s集群:minikube start -p aged —kubernetes-version=v1.16.1
  • 查看易于安装的kubernetes服务目录:minikube addons list

image.png

4.2 dashboard仪表盘启动

使用 minikube 启动 k8s 集群应用的仪表盘

  1. [root@master bin]# minikube dashboard
  2. * Verifying dashboard health ...
  3. * Launching proxy ...
  4. * Verifying proxy health ...
  5. http://127.0.0.1:39865/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

minikube 为自带的 dashboard 创建了默认的service ,并采用了 ClusterIP 的暴露策略,及只对集群内部提供了一个访问地址,集群外并不能直接访问,需要设置集群的代理地址。

  1. [root@master bin]# nohub kubectl proxy --port=[需要暴露的端口号] --address='[服务器IP]' --accept-hosts='^[外部访问服务器的IP]$' >/dev/null 2>&1&
  2. 比如:10.0.10.80 为对外暴露的IP地址
  3. nohup kubectl proxy --port=8088 --address='10.0.10.80' --accept-hosts='^10.0.10.80$' >/dev/null 2>&1&

之后,执行 http://10.0.10.80:8088/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ 即可访问仪表盘的web页面

4.3 minikube部署应用

以 echoserver 服务为例,echoserver 镜像是一个简单的 HTTP 服务器,将请求的 body 携待的参数返回。这里使用阿里云的镜像源

  • 创建服务的deployment和pod:
    1. sudo kubectl create deployment hello-minikube --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10