Kubernetes 系列2 Minikube群集安装

一.介绍

  在安装k8s时,有一种方法安装简单,通过这个命令就能安装 yum install -y etcd kubernetes,还自带了docker。但是这种方式安装k8s版本太低v1.5.2,docker安装版本也太低为v1.13。 由于版本都比较低,后面学习有很多限制。

  如今安装k8s,有多种方式,官方文档指出可借助Minikube工具或kubeadm工具来安装k8s。

  Minikube是一种可以轻松在本地运行Kubernetes的工具。作为学习单机版集群可以用Minikube工具来实现环境安装。Minikube可在笔记本电脑上的虚拟机(VM)内运行一个单节点Kubernetes集群,以供试用Kubernetes或每天进行开发的用户使用。使用Minikube确保先安装了kubectl。

  总结:Minikube是一个CLI工具,可配置和管理单节点Kubernetes集群。用于学习,如果是生产环境使用kubeadm工具来管理多节点的Kubernetes集群。

       Kubectl是k8s客户端工具,使用kubectl版本必须在k8s集群的一个小版本差异之内。例如:v1.2客户端与v1.1,v1.2,v1.3主服务器一起使用。使用最新版本的kubectl有助于避免意外的问题。

         最低配置必须是2核CPU,推荐至少是2核CPU, 4G内存

    docker version: v18.09

    kubectl version: v1.17.3

    minikube version: v1.7.3 (默认下载安装k8s服务端v1.17.3)

  1.1 准备工作

[root@hecs-x-large-2-linux-20200511094526 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 
[root@hecs-x-large-2-linux-20200511094526 ~]# systemctl disable firewalld
[root@hecs-x-large-2-linux-20200511094526 ~]# systemctl stop firewalld
[root@hecs-x-large-2-linux-20200511094526 ~]# hostnamectl set-hostname k8s-host

  1.2 安装docker

    这里推荐使用docker v18.09及以上。具体安装参考:docker 系列2

[root@k8s-host bin]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

  1.3 安装Kubectl客户端

    这里下载的是V1.17.3版本,v1.8版本安装有点问题。

    各版本下载地址列表(打开后可查看源代码,看需要的版本信息):kubernetes-yum-repos-kubernetes-el7-x86_64-Packages安装包下载_开源镜像站-阿里云

    下载后上传到云服务器opt目录下安装:

[root@k8s-host ~]# cd /opt
[root@k8s-host opt]# ls
containerd  kubectl-1.17.3-0.x86_64.rpm
[root@k8s-host opt]#  sudo yum localinstall  kubectl-1.17.3-0.x86_64.rpm

    查看版本信息,此时只显示客户端版本(client version),localhost:8080 was refused无法连接到Kubernetes集群,因为服务端需要接下来的minikube工具来安装: 

[root@k8s-host opt]# sudo kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:14:22Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@k8s-host bin]# systemctl enable kubelet.service
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

 1.4安装Minikube工具

  minikube工具版本号对应k8s服务端版本号,安装后将执行文件移到了/usr/local/bin目录下,命令如下所示:

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

  minikube执行文件目录如下所示:

[root@k8s-host opt]# cd /usr/local/bin
[root@k8s-host bin]# ls
minikube

  minikube工具查看版本信息

[root@k8s-host opt]# minikube version
minikube version: v1.7.3
commit: 436667c819c324e35d7e839f8116b968a2d0a3ff

  启动本地kubernetes集群(第一次会https://k8s.gcr.io 上拉取镜像)

[root@k8s-host bin]# minikube start --vm-driver=none

  国内网络在k8s.gcr.io拉取镜像报错如下所示:

error execution phase preflight: [preflight] Some fatal errors occurred:
    [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.17.3: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
    [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.17.3: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
    [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.17.3: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
    [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.17.3: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
    [ERROR ImagePull]: failed to pull image k8s.gcr.io/pause:3.1: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
    [ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.4.3-0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
    [ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns:1.6.5: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1

  解决方案:指定国内镜像

[root@k8s-host bin]# minikube start --vm-driver=none --image-mirror-country=cn

  也可以手动docker pull下来, 可以在docker hub中找到pull,也可以在阿里云上pull下来参考文章:https://www.cnblogs.com/zhizihuakai/p/12852851.html

   查看集群状态:

[root@k8s-host bin]# minikube status
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

  此时再验证kubectl安装,再次查看版本信息,已经连接上了集群环境localhost:8080,服务端版本也是v1.17.3

[root@k8s-host bin]# kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:14:22Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:07:13Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}

  验证k8s集群是否安装完成(后补加的)

[root@k8s-host ~]# kubectl get pods --all-namespaces
NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
kube-system            coredns-7f9c544f75-czbjr                     1/1     Running   1          4d23h
kube-system            coredns-7f9c544f75-hwjtb                     1/1     Running   1          4d23h
kube-system            etcd-k8s-host                                1/1     Running   1          4d23h
kube-system            kube-apiserver-k8s-host                      1/1     Running   1          4d23h
kube-system            kube-controller-manager-k8s-host             1/1     Running   1          4d23h
kube-system            kube-proxy-ht6sb                             1/1     Running   1          4d23h
kube-system            kube-scheduler-k8s-host                      1/1     Running   1          4d23h
kube-system            storage-provisioner                          1/1     Running   1          4d23h
kubernetes-dashboard   dashboard-metrics-scraper-7b64584c5c-7tx44   1/1     Running   0          4d22h
kubernetes-dashboard   kubernetes-dashboard-79d9cd965-gp7t7         1/1     Running   0          4d22h

  使用minikube命令来关闭k8s集群

[root@k8s-host bin]# minikube stop
* Stopping "minikube" in none ...
* "minikube" stopped.
[root@k8s-host bin]# minikube status
host: Stopped
kubelet: Stopped
apiserver: Stopped
kubeconfig: Stopped

  再次启动k8s集群

[root@k8s-host bin]# minikube start --vm-driver=none --image-mirror-country=cn

  查看运行的docker镜像文件

[root@k8s-host bin]# docker ps 
CONTAINER ID        IMAGE                                                           COMMAND                  CREATED              STATUS              PORTS               NAMES
46b1d6d4594c        70f311871ae1                                                    "/coredns -conf /etc…"   About a minute ago   Up About a minute                       k8s_coredns_coredns-7f9c544f75-hwjtb_kube-system_a178b2f8-303d-4128-bb52-35bb4d47c976_1
603dd503979a        70f311871ae1                                                    "/coredns -conf /etc…"   About a minute ago   Up About a minute                       k8s_coredns_coredns-7f9c544f75-czbjr_kube-system_675b6dfc-4faf-49e1-b89e-3506740d495d_1
27a469c1ac53        4689081edb10                                                    "/storage-provisioner"   About a minute ago   Up About a minute                       k8s_storage-provisioner_storage-provisioner_kube-system_209343cc-e120-4f9d-b19f-c0ef7eeb5917_1
f32ed4e06ffb        ae853e93800d                                                    "/usr/local/bin/kube…"   About a minute ago   Up About a minute                       k8s_kube-proxy_kube-proxy-ht6sb_kube-system_2f4e5417-d435-4f38-b717-338ec061afe1_1
863ffa3646f8        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1   "/pause"                 About a minute ago   Up About a minute                       k8s_POD_coredns-7f9c544f75-hwjtb_kube-system_a178b2f8-303d-4128-bb52-35bb4d47c976_1
ee616c146c06        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1   "/pause"                 About a minute ago   Up About a minute                       k8s_POD_coredns-7f9c544f75-czbjr_kube-system_675b6dfc-4faf-49e1-b89e-3506740d495d_1
07ba33c30d82        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1   "/pause"                 About a minute ago   Up About a minute                       k8s_POD_kube-proxy-ht6sb_kube-system_2f4e5417-d435-4f38-b717-338ec061afe1_1
8592786393f8        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1   "/pause"                 About a minute ago   Up About a minute                       k8s_POD_storage-provisioner_kube-system_209343cc-e120-4f9d-b19f-c0ef7eeb5917_1
62a9100aa6e5        303ce5db0e90                                                    "etcd --advertise-cl…"   About a minute ago   Up About a minute                       k8s_etcd_etcd-k8s-host_kube-system_705a0444c07b2b807f778d2099faac4c_1
cc3ee273320a        d109c0821a2b                                                    "kube-scheduler --au…"   About a minute ago   Up About a minute                       k8s_kube-scheduler_kube-scheduler-k8s-host_kube-system_703c43ab97818f969f780a2cbf4d24b7_1
b4a704b4aef3        90d27391b780                                                    "kube-apiserver --ad…"   About a minute ago   Up About a minute                       k8s_kube-apiserver_kube-apiserver-k8s-host_kube-system_38c3efc6f95b00b52427c3347f8603e6_1
74443ac19a80        b0f1517c1f4b                                                    "kube-controller-man…"   About a minute ago   Up About a minute                       k8s_kube-controller-manager_kube-controller-manager-k8s-host_kube-system_891000849224be61445397b01f007a6e_1
1bdc2c5d7472        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1   "/pause"                 About a minute ago   Up About a minute                       k8s_POD_etcd-k8s-host_kube-system_705a0444c07b2b807f778d2099faac4c_1
02a2d111d35f        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1   "/pause"                 About a minute ago   Up About a minute                       k8s_POD_kube-scheduler-k8s-host_kube-system_703c43ab97818f969f780a2cbf4d24b7_1
92fe5985bc0e        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1   "/pause"                 About a minute ago   Up About a minute                       k8s_POD_kube-controller-manager-k8s-host_kube-system_891000849224be61445397b01f007a6e_1
21550ecde0ce        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1   "/pause"                 About a minute ago   Up About a minute                       k8s_POD_kube-apiserver-k8s-host_kube-system_38c3efc6f95b00b52427c3347f8603e6_1

 1.4 安装 dashboard  

[root@k8s-host bin]# minikube dashboard
* Enabling dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:46658/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

  默认只有本机访问,设置代理让外部访问(前台运行不能退出)

[root@k8s-host ~]# kubectl proxy --port=33458 --address='0.0.0.0' --accept-hosts='^.*' &
[1] 28883
[root@k8s-host ~]# Starting to serve on [::]:33458

  设置云服务器端口:

   外面电脑访问(公网ip)

http://121.37.xxx.xx:33458/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/overview?namespace=default

    实践: 当云服务器中k8s环境搭建好后,可以备份一个私有镜像, 在新的云服务器上还原,修改主机名,关闭防火墙等,启动命令如下所示:

   minikube start --vm-driver=none --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'   --kubernetes-version v1.17.3 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值