配置应用到k8s

配置应用到k8s,前置条件是安装了Docker,Minikube,kubectl

应用已经通过Docker生成本地镜像文件

1,创建godemo-deployment.yaml

java 复制代码
	apiVersion: apps/v1 	#指定了使用的 Kubernetes API 版本
	kind: Deployment 	#定义了这个配置文件描述的 Kubernetes 资源类型为 Deployment。
	metadata:		#包含了资源的元数据,比如名称等
	  name: godemo-deployment 	#指定了这个 Deployment 的名称为 "godemo-deployment"。
	spec: 	#定义了 Deployment 的规格,包括副本数量、选择器和模板
	  replicas: 3 	#启动三个副本
	  selector: 	#定义了用于选择 Pod 的标签
	    matchLabels: 	#指定了要匹配的标签,这里选择了标签为 "app: godemo" 的 Pod。
	      app: godemo
	  template: 	#定义了要创建的 Pod 的模板
	    metadata: 	#包含了 Pod 模板的标签
	      labels: 	#指定了 Pod 的标签为 "app: godemo"。
	        app: godemo
	    spec: 	#定义了 Pod 的规格,包括容器等
	      containers: 	#指定了要运行的容器
	      - name: godemo 	#指定了容器的名称为 "godemo"。
	        image: godemo:local 	#指定了要使用的容器镜像为 "godemo:local"。
	        ports: 	#指定了容器需要暴露的端口。
	        - containerPort: 7080 	#指定了容器内部应用程序所使用的端口号为 7080。
	        resources: 	#定义了容器的资源限制。
	         limits:
	          memory: "512Mi" 	#内存限制
	          cpu: "1"	#xpu限制

这个配置文件描述了一个名为 "godemo" 的应用程序的部署规范,包括了副本数量、容器镜像、端口暴露以及资源限制等信息。

2,创建godemo-deployment

用于将名为godemo-deployment.yaml的YAML文件中定义的Deployment资源应用到Kubernetes集群中
这是一个kubectl命令,用于将名为godemo-deployment.yaml的YAML文件中定义的Deployment资源应用到Kubernetes集群中。
这将会创建或更新Kubernetes中的Deployment资源,以确保其与godemo-deployment.yaml文件中定义的规范一致。

kubectl apply -f godemo-deployment.yaml

3,用于获取当前Kubernetes集群中所有的Pod

。执行该命令后,将会列出所有命名空间中的Pod的相关信息,包括名称、所属命名空间、状态、IP地址等。

kubectl get pods

4,用于获取当前Kubernetes集群中所有的服务

。执行该命令后,将会列出所有命名空间中的服务的相关信息,包括名称、类型、ClusterIP、外部IP等。

kubectl get services

5,创建godemo-service.yaml

java 复制代码
	apiVersion: v1 		#指定了使用的 Kubernetes API 版本
	kind: Service 		#定义了这个配置文件描述的 Kubernetes 资源类型为 Service。
	metadata: 		#包含了资源的元数据,比如名称等。
	  name: godemo-service 		#指定了这个 Service 的名称为 "godemo-service"。
	spec: 		#定义了 Service 的规格,包括服务类型、选择器和端口信息。
	  type: NodePort 		#指定了服务类型为 NodePort,这意味着服务将会暴露一个随机端口供外部访问。
	  selector: 		#定义了用于选择后端 Pod 的标签
		app: godemo 		#指定了要匹配的标签,这里选择了标签为 "app: godemo" 的 Pod。
	  ports: 		#指定了服务需要暴露的端口。
		- protocol: TCP 		#指定了端口使用的协议为 TCP
		  port: 7089 		#指定了服务暴露的端口号为 7089
      targetPort: 7080 		#指定了服务转发流量到后端 Pod 的端口号为 7080。

这个配置文件描述了一个名为 "godemo-service" 的服务,使用 NodePort 类型,将流量转发到标签为 "app: godemo" 的 Pod,并将外部端口 7089 映射到后端 Pod 的端口 7080。

6,创建godemo-service.yaml的YAML文件中定义的Kubernetes服务应用到集群中

java 复制代码
kubectl apply -f godemo-service.yaml

7,获取当前Kubernetes集群中所有节点的详细信息

INTERNAL-IP就是需要请求的服务的ip

包括节点的名称、状态、内部IP地址、外部IP地址等。执行该命令后,将会列出所有节点的详细信息。

//获取到应用的内网ip 192.168.49.2就是当前服务的ip

java 复制代码
	kubectl get nodes -o wide
	
	示例
	[root@iZ2zefj8x9bih0twyv5rcvZ giftpanel]# kubectl get nodes -o wide
	NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION            CONTAINER-RUNTIME
	minikube   Ready    control-plane   41h   v1.28.3   192.168.49.2   <none>        Ubuntu 22.04.3 LTS   4.19.91-27.3.al7.x86_64   docker://24.0.7

8,列出所有服务的相关信息

包括名称、类型、ClusterIP、外部IP等。
//获取到service的暴露端口
java 复制代码
	kubectl get services
	
	示例
	[root@iZ2zefj8x9bih0twyv5rcvZ giftpanel]# kubectl get services
	NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
	godemo-service   NodePort    10.101.28.30   <none>        7089:31634/TCP   16h
	kubernetes       ClusterIP   10.96.0.1      <none>        443/TCP          41h

8,测试应用 31634就是暴露的端口

curl http://192.168.49.2:31634/giftpanel/test/login?name=999999999999999999999999
返回内容
java 复制代码
	<!DOCTYPE html>
	<html>
	<head>
	    <title>Gin HTML Demo xxxxxxxxxx</title>
	</head>
	<body>
		<h1>Welcome to Gin HTML Demo xxxxxxxxxx</h1>
		<p>999999999999999999999999</p>
	</body>

9,从Kubernetes集群中删除名为godemo-deployment的Deployment

java 复制代码
	kubectl delete deployment godemo-deployment

10,执行该命令后,将会从集群中删除名为godemo-service的服务

kubectl delete service godemo-service

11,排查问题常用命令,

java 复制代码
kubectl get svc godemo-service
kubectl describe svc godemo-service
kubectl get pods --selector=app=godemo
kubectl logs <pod_name>

kubectl get svc godemo-service:用于获取名为 "godemo-service" 的Kubernetes服务的信息,包括名称、类型、集群IP等。

kubectl describe svc godemo-service:用于获取名为 "godemo-service" 的Kubernetes服务的详细描述信息,包括与该服务相关的端口、选择器和其他配置。

kubectl get pods --selector=app=godemo:用于获取具有标签 app=godemo 的所有Pod的信息,包括名称、状态和IP地址等。

kubectl logs <pod_name>:用于获取特定Pod的日志信息。您需要将 <pod_name> 替换为实际的Pod名称,以便查看该Pod的日志。

相关推荐
ZHOU西口39 分钟前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
牛角上的男孩1 小时前
Istio Gateway发布服务
云原生·gateway·istio
JuiceFS3 小时前
好未来:多云环境下基于 JuiceFS 建设低运维模型仓库
运维·云原生
景天科技苑3 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
wclass-zhengge4 小时前
K8S篇(基本介绍)
云原生·容器·kubernetes
颜淡慕潇4 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
川石课堂软件测试6 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
昌sit!12 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
A ?Charis15 小时前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
wclass-zhengge15 小时前
Docker篇(Docker Compose)
运维·docker·容器