本地快速搭建Kubernetes单机版实验环境(含问题解决方案) | 您所在的位置:网站首页 › 容器云环境搭建 › 本地快速搭建Kubernetes单机版实验环境(含问题解决方案) |
Kubernetes是一个容器编排系统,用于自动化应用程序部署、扩展和管理。本指南将介绍Kubernetes的基础知识,包括基本概念、安装部署和基础用法。 一、什么是Kubernetes?Kubernetes是Google开发的开源项目,是一个容器编排系统,可以自动化部署、扩展和管理容器化的应用程序。Kubernetes可以跨多个主机管理容器,并提供自动化负载均衡、弹性伸缩、自我修复和滚动更新等功能。 Kubernetes的基本架构由Master和Node组成。Master是集群控制中心,负责管理集群状态、控制应用程序部署和监控应用程序状态。Node是集群的工作节点,运行应用程序容器并将它们与Master通信。 二、Kubernetes的基本概念在使用Kubernetes之前,需要了解一些基本概念。以下是一些Kubernetes的核心概念: Pod:是Kubernetes的最小部署单元,通常包含一个或多个容器。Pod中的容器共享网络和存储,并在同一个主机上运行。Deployment:是一种Kubernetes资源对象,用于管理Pod的副本数,并支持滚动更新。Service:是一种Kubernetes资源对象,用于将一组Pod公开为一个网络服务,并提供负载均衡。Namespace:是一种Kubernetes资源对象,用于隔离不同应用程序或团队的资源。ConfigMap:是一种Kubernetes资源对象,用于将应用程序配置信息与容器分离。Secret:是一种Kubernetes资源对象,用于存储敏感信息,如密码和API密钥。 三、Kuberntes单机本地部署Kubernetes有多种安装方式:minikube、kubeadm和二进制包。 minikube:是一种在本地环境中部署Kubernetes的工具,它可以在单个虚拟机中运行一个Kubernetes集群,一般用于开发、测试环境搭建。kubeadm:是一种在物理机或虚拟机中快速部署Kubernetes集群的工具,已被证明可以应用于生成环境的集群搭建。二进制包:手工安装,流程复杂,容易出错,不建议。这里以minikube为例,展示如何在单机上部署kubernetes,搭建一个本地演示环境。 3.1、安装minikube命令行工具可以参考官方文档进行安装,具体安装方式可以根据自己的操作系统选择,这里以Centos为例,使用minikube version可以查看到版本信息。 [root@node1 kubernetes]# curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 [root@node1 kubernetes]# install minikube-linux-amd64 /usr/local/bin/minikube [root@node1 kubernetes]# minikube version minikube version: v1.29.0 commit: ddac20b4b34a9c8c857fc602203b6ba2679794d3 3.2、安装dockerminikube可以使用不同的驱动,例如Linux系统下支持Docker、KVM2、VirtualBox、QEMU、None、Podman、SSH。我们这里以最常用的Docker为例,所以需要先安装Docker。 Docker的版本不宜太旧,建议安装最新稳定版。 删除旧的Docker版本: sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine设置repository: sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo安装最新版Docker: sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin启动并查询docker状态,看到状态是running代表已经运行起来了。 sudo systemctl start docker sudo systemctl status docker在命令行中输入以下命令启动minikube: [k8s@node2 ~]$ minikube start --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --driver=docker其中--driver=docker指定了使用docker驱动,--image-mirror-country和--image-repository是非必须的,只是考虑到国外的源下载速度比较慢,可以替换成国内的加快速度。 启动以后发现启动失败,提示以下问题The kubelet is not running: 查看输出日志来辅助判断具体原因: [k8s@node2 ~]$ sudo tail /var/log/messages发现错误信息为DNS Server相关: 使用sudo vim /etc/resolv.conf查看DNS配置: 判断相关错误为前期其他实验设置了nameserver,删除相关配置恢复默认设置,然后重启minikube,发现正常启动了。 3.4、部署应用程序可以使用kubectl命令行工具部署应用程序。以下是一个简单的示例: kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4这将创建一个Deployment,并在其中运行一个Pod,Pod中的容器将运行一个Web服务器。 3.5、公开服务在Kubernetes中,服务是一种将Pod公开为网络服务的机制。可以使用kubectl创建一个服务,使应用程序可以通过Kubernetes集群中的其他Pod或外部客户端访问。以下是一个示例: kubectl expose deployment hello-minikube --type=NodePort --port=8080这将创建一个服务,并将其公开为NodePort类型,使得可以通过Kubernetes集群中任何一个节点的IP地址和NodePort访问到服务。 3.6、访问应用程序:可以使用kubectl命令行工具获取Minikube节点的IP地址和NodePort,然后在Web浏览器中访问该IP地址和NodePort,以访问应用程序。 minikube service hello-minikube --url这将返回服务的URL,可以将其复制到Web浏览器中进行访问。 四、kubernetes的基础用法使用Kubernetes,可以通过Kubernetes API和kubectl命令行工具进行操作。以下是一些基本用法: 4.1、创建和查询Deployment以下命令创建一个deployment,名为my-deployment,使用镜像busybox。 kubectl create deployment my-deployment --image=busybox创建完成后使用以下命令可以查看deployment kubectl get deployments 4.2、创建和查询Podkubectl支持json或者yaml格式来创建pod,例如: $ cat |
CopyRight 2018-2019 实验室设备网 版权所有 |