Kubernetes(k8s)学习笔记(四)--入门基本操作
本文通过kubernetes部署tomcat集群,来学习和掌握kubernetes的一些入门基本操作
前提条件
1.各个节点处于Ready状态;
2.配置好docker镜像库(否则会出现ImagePullBackOff等一些问题);
3.网络配置正常(否则即使应用发布没问题,浏览器访问不了)。
实现的过程
一.编写一个tomcat发布的yaml文件tomcat-9.0-deployment.yaml,内容类似下面这样的:
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: tomcat9name: tomcat9
spec:replicas: 3 #指定集群的节点个数selector:matchLabels:app: tomcat9template:metadata:labels:app: tomcat9spec:containers:- image: tomcat:9.0.85-jre8name: tomcat# 启动时自动复制 webapps.dist 内容到 webappslifecycle:postStart:exec:command: ["/bin/sh", "-c", "cp -r /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps/"]ports:- containerPort: 8080
--- # 使用三个短横线分隔不同的配置,一个yaml文件可以配置多个
apiVersion: v1
kind: Service
metadata:labels:app: tomcat9name: tomcat9
spec:ports:- port: 80protocol: TCPtargetPort: 8080nodePort: 30080 # 指定易记端口,对外访问端口selector:app: tomcat9type: NodePortexternalTrafficPolicy: Cluster
二.使用yaml文件部署tomcat集群
kubectl apply -f ./tomcat-9.0-deployment.yaml
执行后输出:deployment和service created的信息
三.验证应用的发布
使用下面的命令,查看所有资源情况
kubectl get all
从上图可以看到,3个tomcat节点都处于运行状态,对外访问端口是30080。
然后使用浏览器访问,出现tomcat的欢迎页面,注意这里的IP不是CLUSTER-IP,而是前面文章配置时获得的ip。可使用这个命令查看启动是否正常,是否可访问:
[root@k8s-node1 k8s]# kubectl exec -it tomcat9-f4d6f4687-7vwch -- curl -I localhost:8080
HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Sat, 03 May 2025 08:06:38 GMT
返回200则表示正常。
如果不知道yaml文件怎么写,可以尝试在命令后面添加--dry-run,这样就会输出示例yaml文件
例如:
kubectl create deployment tomcat9 --image=tomcat:9 --dry-run -o yaml > tomcat9-deployment.yaml
就会在当前目录下输出一个tomcat9-deployment.yaml文件从而获得app的配置信息,但并不会创建一个发布,同样kubectl expose deployment tomcat9 --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml则在当前目录下输出service配置的内容,然后把service配置的内容添加到前面的tomcat9-deployment.yaml(使用---分隔开来),然后以最终的tomcat9-deployment.yaml来发布应用。
拓展:常用命令
1.获取所有的命名空间
kubectl get ns
2.获取所有命名空间的节点信息,用户创建的发布均位于default空间下:
kubectl get pods --all-namespaces
3.获得默认命名空间的节点基本信息
kubectl get pods
3.获得默认命名空间的节点详细信息
kubectl get pods -o wide
4.获取所有资源信息
kubectl get all
5.获取所有的节点信息
kubectl get nodes
6.获取所有的服务信息
kubectl get svc
7.使用指定文件创建发布
kubectl apply -f xxx.yaml
8.删除发现的应用
kubectl delete deployment.apps/应用名
9.向外暴露端口
kubectl expose deployment tomcat9 --port=80 --target-port=8080 --type=NodePort
10.将应用扩容到指定数目的数量
kubectl scale --replicas=3 deployment 应用名
11.进入应用内部
kubectl exec -it pod/应用名称 -- /bin/bash
12.获得服务的详细信息
kubectl describe service tomcat9