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版本安装有点问题。
各版本下载地址列表(打开后可查看源代码,看需要的版本信息):https://mirrors.aliyun.com/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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2018-12-27 redis 系列27 Cluster高可用 (2)