k8s创建一个srpingboot项目pod实例


k8s创建一个srpingboot项目pod实例

先将springboot项目jar打包成镜像

编写Dockerfile:

FROM openjdk:8
COPY springboot-demo-0.0.1-SNAPSHOT.jar /springboot-demo.jar
ENTRYPOINT ["java","-jar","/springboot-demo.jar"]
docker build -t springboot-demo-image:v1.0 .
可以将镜像上传到阿里云镜像库中

编辑springboot-demo.yaml文件,内容如下

apiVersion: apps/v1
kind: Deployment
metadata:
  name: blog-dep
spec:
  selector:
    matchLabels:
      app: blog
  replicas: 1
  template:
    metadata:
      labels:
        app: blog
    spec:
      imagePullSecrets: 
      - name: blog 
      containers:
      - name: blog #pod 名
      #项目的镜像文件
        image: registry.cn-hangzhou.aliyuncs.com/chenguanghu/cgh:springboot-demo-image
        ports:
        - containerPort: 8080 #容器内部端口
---
# 创建Pod的Service 将容器8080端口映射到node外部访问端口30080 (nodePort端口范围:30000~)
apiVersion: v1
kind: Service
metadata:
  name: blog-service
spec:
  type: NodePort  #
  ports:
  - port: 8080 #service端口
    protocol: TCP
    targetPort: 8080 #pod端口,集群内部访问端口
    nodePort: 30080  #node端口 外部访问端口

  selector:
    app: blog
---

​ port是k8s集群内部访问service的端口(service暴露在Cluster IP上的端口),即通过clusterIP:port可以访问到某个service

​ nodePort是外部访问k8s集群中service的端口,通过 nodelP:nodePort 可以从外部访问到某个service. 该端口号的范围是 kube-apisever 的启动参数 -serice-node-pont-ange 指定的,在当前测试环境中其值是 30000-500。表示只允许分配30000-50000之间的端口.

​ targetPort是pod的端口,从port和nodePor来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器

​ containerPort是pod内部容器的端口,targetPort映射到containerPort。

创建pod

kubectl apply -f springboot-demo.yaml

#验证:
使用nodeip:30080 访问

常用命令:

kubectl get pods -o wide  #查看pod列表

kubectl get nodes -o wide #查看node列表

kubectl get services #查看service列表

kubectl get deployment #查看deployment列表

kubectl delete <资源类型> <资源名称> #删除指定资源。

kubectl delete pod <pod-name> #删除指定pod

#强制删除 pod
kubectl delete pod <pod-name> -n <命令空间> --force --grace-period=0

kubectl delete service <service-name> #删除指定 service。

#删除指定命令空间下所有的 pod;pods 改为 services 即为删除所有的 services
kubectl delete pods --all -n <命名空间>

kubectl exec -it <pod-name> --bash #登录容器

kubectl logs -f <Pod 名称> #查看pod日志

教程