建设网站的建设费用包括什么科目,室内设计公司排名十强,哪有做机械设计的网站,火狐如何去掉2345网址导航Kubernetes是一个容器编排系统#xff0c;用于自动化应用程序部署、扩展和管理。本指南将介绍Kubernetes的基础知识#xff0c;包括基本概念、安装部署和基础用法。
一、什么是Kubernetes#xff1f;
Kubernetes是Google开发的开源项目#xff0c;是一个容器编排系统用于自动化应用程序部署、扩展和管理。本指南将介绍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可以查看到版本信息。
[rootnode1 kubernetes]# curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
[rootnode1 kubernetes]# install minikube-linux-amd64 /usr/local/bin/minikube
[rootnode1 kubernetes]# minikube version
minikube version: v1.29.0
commit: ddac20b4b34a9c8c857fc602203b6ba2679794d33.2、安装docker
minikube可以使用不同的驱动例如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 docker3.3、启动minikube
在命令行中输入以下命令启动minikube
[k8snode2 ~]$ minikube start --image-mirror-countrycn --image-repositoryregistry.cn-hangzhou.aliyuncs.com/google_containers --driverdocker其中--driverdocker指定了使用docker驱动--image-mirror-country和--image-repository是非必须的只是考虑到国外的源下载速度比较慢可以替换成国内的加快速度。
启动以后发现启动失败提示以下问题The kubelet is not running 查看输出日志来辅助判断具体原因
[k8snode2 ~]$ sudo tail /var/log/messages发现错误信息为DNS Server相关 使用sudo vim /etc/resolv.conf查看DNS配置 判断相关错误为前期其他实验设置了nameserver删除相关配置恢复默认设置然后重启minikube发现正常启动了。
3.4、部署应用程序
可以使用kubectl命令行工具部署应用程序。以下是一个简单的示例
kubectl create deployment hello-minikube --imagek8s.gcr.io/echoserver:1.4这将创建一个Deployment并在其中运行一个PodPod中的容器将运行一个Web服务器。
3.5、公开服务
在Kubernetes中服务是一种将Pod公开为网络服务的机制。可以使用kubectl创建一个服务使应用程序可以通过Kubernetes集群中的其他Pod或外部客户端访问。以下是一个示例
kubectl expose deployment hello-minikube --typeNodePort --port8080这将创建一个服务并将其公开为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 --imagebusybox创建完成后使用以下命令可以查看deployment
kubectl get deployments4.2、创建和查询Pod
kubectl支持json或者yaml格式来创建pod例如
$ cat EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:name: my-busybox
spec:containers:- name: busyboximage: busybox
EOF创建完成以后使用kubectl get pods --all-namespaces可以列出所有 namespace 中的所有 pod。
4.3、手动缩放Pod
可以使用kubectl命令行工具手动缩放Pod的数量以满足当前的负载需求。例如可以使用以下命令来将Pod的数量扩展到3个
kubectl scale deployment my-app --replicas34.4、删除资源
kubectl支持多种形式的删除资源的方法: 使用定义文件 删除匹配 pod.json 文件中定义的类型和名称的 pod kubectl delete -f ./pod.json使用名称 删除指定名称的pod kubectl delete pod mypod使用标签 删除具有 namemypod-label标签的pod kubectl delete pods -l namemypod-label使用namespace 删除my-ns这个namespace下所有的pod kubectl -n my-ns delete po --allkubernetes的用法还有很多具体可以参考官方文档不建议死记硬背而是需要时使用熟能生巧。