Kubernetes中的Port端口演示

在编排kubernetes时,Deployment、ReplicationController的Pod项有containerPort,Service文件里的port,targetPort, nodePort

Deployment、ReplicationController中的

containerPort:容器暴露的端口

Service中的

port:service暴露在cluster ip上的端口,通过<cluster ip>:port访问服务,通过此端口集群内的服务可以相互访问

targetPort:提供该服务的容器所暴露(EXPOSE)的端口号,没有指定targetPort,则默认targetPort与port相同

nodePort:节点端口,<nodeIP>:nodePort 是提供给集群外部客户访问service的入口,默认的,nodePort的范围是30000-32767可以通过修改apiserver--service-node-port-range 的参数来修改默认范围,如:--service-node-port-range 8000-9000

1. 创建 frontend-rc.yaml ,执行 kubectl apply -f frontend-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: frontend
spec:
  replicas: 1
  selector:
    tier: frontend
  template:
    metadata:
      labels:
        app: app-demo
        tier: frontend
    spec:
      containers:
      - name: tomcat-demo
        image: tomcat
        imagePullPolicy: IfNotPresent
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 8080
      - name: nginx-demo
        image: nginx
        imagePullPolicy: IfNotPresent
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80

2. 创建 frontend-service.yaml: 执行 kubectl apply -f frontend-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    name: frontend
spec:
  ports:
  - port: 8080
    targetPort: 80 # nginx容器曝露的端口
    nodePort: 30000
  selector:
    tier: frontend
  type: NodePort # 使用NodePort向k8s集群外部暴露服务

3. 查看dashboard

4. 访问

运行 kubectl describe pod frontend-s4kd7 查看当前节点的IP地址为10.1.0.62

 

运行kubectl exec -it frontend-s4kd7 -c nginx-demo /bin/bash  ,登录nginx-demo容器

运行 curl http://10.1.0.62:8080  #10.1.0.62 为节点 IP地址,访问Tomcat容器

运行 curl http://10.1.0.62:80  # 10.1.0.62 为节点 IP地址,访问Nginx容器

运行 curl http://10.104.109.187:8080  #10.104.109.187 为Cluster IP地址

ifconfig查看本机IP地址为 192.168.10.7

在浏览器输入http://192.168.10.7:30000/ # 30000为nodePort曝露出来的端口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章