Kubernetes POD与NodePort服务发布

单一POD发布规范与常用命令

  • POD发布规范及YAML文件
  • POD发布命令
    • POD端口转发(仅适用于调试)
  • NodePort Service路由YAML文件
  • 服务发布命令

查找最新发布规范样例,可以在官方文档中找到。K8S API Reference

POD发布规范及YAML文件

本YAML文件以发布镜像petclinic为例。
大小写需要严谨。缩进为两个空格。- 为列表格式,代表可以为多个。

假设样例文件为:petclinic-pod.yml
内容如下:

apiVersion: v1
kind: Pod
metadata:
  # Pod名字
  name: petclinic
spec:
  containers:
      # 容器名字
    - name: petclinic
      # 镜像地址
      image: spring2go/spring-petclinic:1.0.0.RELEASE

官方样例:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#pod-v1-core

POD发布命令

登录到K8S Master节点,使用一下命令查看集群状态。

#可以看到K8S内运行的服务/POD.
kubectl get all

#发布POD, 选项-f后面接要发布的文件名称,成功后会显示一行POD created信息。
kubectl apply -f petclinic-pod.yml

#再次查看K8S内运行的服务/POD。
kubectl get all
#可以单独看pod的信息, 用pod的名字,pod选择可以缩写为po。
kubectl get pod petclinic
kubectl describe pod petclinic

POD端口转发(仅适用于调试)

此方法不用于生产环境。

kubectl get po
#前面是本机端口8080转发到POD端口8080.
kubectl port-forward petclinic 8080:8080

NodePort Service路由YAML文件

Service 3种类型: NodePort, LoadBalancer(用于公有云), ClusterIP(K8S内的反向代理)
Kubernetes POD与NodePort服务发布_第1张图片

NodePort Service YAML发布文件

apiVersion: v1
kind: Service
metadata:
  # Unique key of the Service instance
  name: petclinic
spec:
  ports:
    # Accept traffic sent to port 80
    - name: http
      #是本service的端口,在集群内部使用
      port: 8080
      #对接的后台pod的端口,可以不填
      targetPort: 8080
      #在本地开启31080端口,K8S要求nodePort范围: 30000 ~ 32767
      nodePort: 31080
  selector:
    # 后台pod标签
    app: petclinic
  # 本地环境只能选NodePort,看上面service类型。
  type: NodePort

为了让服务路由生效,需要调整POD的发布文件
修改样例文件:petclinic-pod.yml
内容如下:(增加了labels)

apiVersion: v1
kind: Pod
metadata:
  # Pod名字
  name: petclinic
  labels:
    app: petclinic
spec:
  containers:
      # 容器名字
    - name: petclinic
      # 镜像地址
      image: spring2go/spring-petclinic:1.0.0.RELEASE

官方参考:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#service-v1-core

服务发布命令

#可以看到K8S内运行的服务/POD.
kubectl get all

#发布当前目录所有文件
kubectl apply -f .
#再次查看K8S内运行的服务/POD。
kubectl get all

#可以单独看service的信息, 用service的名字,service选择可以缩写为svc。
kubectl describe service petclinic

你可能感兴趣的:(K8S,kubernetes)