学习k8s的应用(三)
- 手机
- 2025-08-06 01:42:02

一、k8s部署ngnix 1、一些查看命令 1-1、所有命令空间 kubectl get pod --all-namespaces kubectl get svc --all-namespaces 1-2、指定命令空间 kubectl get pod -n yabin kubectl get svc -n yabin 2、单节点集群兼容 # 因为目前只有一个master节点,默认安装后默认不会调度pod运行在master节点上,需要执行下列命令 kubectl taint nodes --all node-role.kubernetes.io/master- 3、部署ngnix,创建pod资源 sudo tee /app/nginx/nginx-deploy.yaml <<EOF apiVersion: apps/v1 # 指定deployment的api版本; apps所属组,版本v1 kind: Deployment # 指定创建资源的角色/类型 metadata: # 指定Deployment的元数据 name: nginx-deploy # 创建名为nginx-deploy的Deployment namespace: yabin labels: # 指定Deployment的标签(可自定义多个),随意自定义即可,无需匹配其他 app: nginx spec: # Deployment的资源规格 replicas: 1 # Deployment将创建1个Pod副本(默认为 1) selector: # 匹配标签选择器,定义Deployment要管理的Pod,必须与Pod的template模板中定义的标签保持一致 matchLabels: app: nginx template: # 指定Pod模板 metadata: # 指定Pod的元数据 labels: # 指定Pod的标签(可自定义多个) app: nginx spec: # Pod的资源规格 containers: # 指定Pod运行的容器信息 - name: nginx # 指定Pod中运行的容器名 image: nginx:1.20 # 指定Pod中运行的容器镜像与版本(不指定镜像版本号则默认为latest) ports: - containerPort: 80 # 指定容器的端口(即Nginx默认端口) EOF 4、配置ngnix对外端口号(用于暴露服务) sudo tee /app/nginx/nginx-svc.yaml <<EOF apiVersion: v1 kind: Service metadata: name: nginx-service # svc名称,对应 kubectl get svc的name namespace: yabin # 命名空间,没有可以删除,默认是default spec: selector: app: nginx # 关联容器标签(选择业务容器进行发布) ports: - port: 8000 # 集群内部服务之间访问service的入口 targetPort: 80 # 容器的端口 protocol: TCP nodePort: 30001 # nodeport映射为30001端口,便于外部主机访问 type: NodePort # svc类型为nodeport EOF 5、创建资源,对资源进行配置 kubectl apply -f nginx-deploy.yaml kubectl apply -f nginx-svc.yaml 6、访问及测试 6-1、访问地址
http://121.5.167.170:30001/
6-2、通过kubectl命令进入容器 # ############ 执行进入容器命令模板 ############ kubectl exec -it podName -c containerName -n namespace -- shell comand kubectl exec -it Pod名称 [-c 容器名称] [-n 命名空间] -- /bin/bash # podName:是【kubectl get pod -n yabin】对应的name(如下图) # containerName(非必须) :查看nginx-deploy.yaml中容器设置的名称 # -n namespace 命名空间:查看配置是否有设置命名空间,有就使用 # ############ 进入容器方法 ############ kubectl exec -it nginx-deploy-6897679c4b-g7hl5 -c nginx -n yabin -- /bin/bash kubectl exec -it nginx-deploy-6897679c4b-g7hl5 -n yabin -- /bin/bash 6-3、通过docker命令进入容器 # 容器ID:是docker ps的CONTAINER ID值 sudo docker exec -it 容器ID /bin/bash # 进入容器方法 sudo docker exec -it 25fab27be87b /bin/bash 7、针对端口不同的处理方式 # 外部流量访问k8s集群中service入口 curl 121.5.167.170:30001 # 集群内部服务之间访问service的入口 curl 10.111.200.98:8000 二、部署springboot项目 1、创建镜像构建文件 # 设置JAVA版本:FROM <image>:<tag> FROM openjdk:8-jdk-alpine # 在容器内创建一个挂载点 /logs,用于存储数据(作用不大) VOLUME /logs # ADD和COPY 二选一 # 用于将本地文件或目录复制到容器中(对压缩包有解压拷贝):ADD <src> <dest> ADD springboot-1.0.0.jar /app/app.jar # 入口点, 执行JAVA运行命令(app.jar在/app目录下) ENTRYPOINT ["java", "-jar", "/app/app.jar"] 2、构建镜像 docker build -t ImageName:TagName [-f filename] dir # 示例 docker build -t spring-boot:1.0.0 -f dockerfile_boot . # 构建镜像的模版 docker build -t ImageName:TagName dir # 选项: # -t - 提到镜像的标签。 # ImageName - 这是您要为镜像指定的名称。 # TagName - 这是您要为镜像指定的标签。 # dir - Dockerfile所在的目录。 3、docker运行容器,指定构建的镜像springboot 3-1、模版命令 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] # option 作用,如下部分: # -d 守护进程,后台运行该容器 # -p 指定端口映射,格式:主机(宿主)端口:容器端口 3-2、运行容器,指定镜像、容器名、端口号的示例 # 8001:8001 -> 前者是宿主机端口(外网访问端口),后者是容器需暴露的端口(项目端口) docker run -d -p 8001:8001 --name spring-boot --privileged=true spring-boot:1.0.0 # 执行成功后,访问 http://121.5.167.170:8001/k8s/ 3-3、docker方式进入、停止和删除容器 # 进入容器(不能使用/bin/sh,制作的镜像是精简版的,只装了sh命令,未安装bash) sudo docker exec -it e8fc82f0567f /bin/sh # 列出运行中的容器( -n 1 指最近1个创建的容器) docker ps -n 1 # 停止或启动容器(如下图) docker stop 容器ID/容器名称 -> docker stop e8fc82f0567f /spring-boot # 用来删除一个或者多个已经停止的 Docker容器 docker rm 容器ID/容器名称 # 用于删除本地一个或多个 Docker镜像 docker rmi 镜像ID(IMAGE ID) 4、k8s运行容器,指定构建的镜像springboot 4-1、springboot-deploy.yaml 配置Pod sudo tee /app/spring/springboot-deploy.yaml <<EOF apiVersion: apps/v1 # 指定deployment的api版本 kind: Deployment # 指定创建资源的角色/类型 metadata: # 指定Deployment的元数据 name: spring-boot-deploy # 创建名为spring-boot-deploy的Deployment namespace: yabin labels: # 指定Deployment的标签(可自定义多个),随意自定义即可,无需匹配其他 app: spring-boot-app spec: # Deployment的资源规格 replicas: 1 # Deployment将创建1个Pod副本(默认为 1) selector: # 定义Deployment管理的Pod,必须与Pod的template模板中定义的标签保持一致 matchLabels: app: spring-boot-app # 匹配标签标识 template: # 指定Pod模板 metadata: # 指定Pod的元数据(当前标签是template下级标签) labels: # 指定Pod的标签(可自定义多个) app: spring-boot-app spec: # Pod的资源规格 containers: # 指定Pod运行的容器信息 - name: spring-boot-app # 指定Pod中运行的容器名 image: spring-boot:1.0.0 # 指定Pod中运行的容器镜像与版本(不指定镜像版本号则默认为latest) ports: - containerPort: 80 # 指定容器的端口(即Nginx默认端口) EOF 4-2、对资源文件进行配置 kubectl apply -f springboot-deploy.yaml 4-3、springboot-svc.yaml配置Pod sudo tee /app/spring/springboot-svc.yaml <<EOF apiVersion: v1 kind: Service metadata: name: spring-boot-service # svc名称,对应 kubectl get svc的name namespace: yabin # 命名空间,没有可以删除,默认是default labels: app: spring-boot-app spec: selector: app: spring-boot-app # 关联容器标签,请求发到app一样的pod中 ports: - port: 8001 ## 容器端口(项目指定的端口号) protocol: TCP nodePort: 30002 # nodeport映射为30002端口,便于外部主机访问 type: NodePort # svc类型为nodeport EOF 4-4、对资源文件进行配置 kubectl apply -f springboot-svc.yaml 4-5、访问地址 http://121.5.167.170:30002/k8s/ 4-6、kubectl方式进入容器 kubectl exec -it podName -n yabin -- /bin/sh podName:kubectl get pod -A 对应的name学习k8s的应用(三)由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“学习k8s的应用(三)”