Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker 诊断工具


Kubernetes Service 对外提供访问

Kubernetes 评论 1 大约 1568 字

暴露服务

ClusterIP:仅用于集群内部访问

kubectl expose deploy nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev

NodePort:对外可提供访问

kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n dev

查看信息

ClusterIP类型输出的结果:

$ kubectl get svc -n dev
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   8s

NodePort类型输出的结果:对外提供30001(每次创建都不固定,但创建后整个Service生命周期都固定)

$ kubectl get svc -n dev
NAME         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
svc-nginx2   NodePort   10.99.142.202   <none>        80:30001/TCP   8s

删除服务

kubectl delete svc svc-nginx1 -n dev

完整配置

kind: Service  # 资源类型
apiVersion: v1  # 资源版本
metadata: # 元数据
  name: service # 资源名称
  namespace: dev # 命名空间
spec: # 描述
  selector: # 标签选择器,用于确定当前 Service 代理哪些 Pod
    app: nginx
  type: # Service 类型,指定 Service 的访问方式
  clusterIP:  # 虚拟服务的 IP 地址
  sessionAffinity: # Session 亲和性,支持 ClientIP、None 两个选项
  ports: # 端口信息
    - protocol: TCP 
      port: 3017  # Service 端口
      targetPort: 5003 # Pod 端口
      nodePort: 31122 # 主机端口

minikube

使用minikube还可使用如下命令,直接打开浏览器访问

minikube service svc-nginx2 -n dev

输出:

| NAMESPACE |    NAME    | TARGET PORT |            URL            |
| dev       | svc-nginx2 |          80 | http://10.148.69.70:30001 |
🎉  Opening service dev/svc-nginx2 in default browser...

端口转发

service/svc-nginx2:指定service名称

将本地7080端口映射到Kubernetes内部端口的80上(--port指定的端口)

kubectl port-forward service/svc-nginx2 7080:80 -n dev

本地访问7080即可

http://localhost:7080
阅读 1347 · 发布于 2022-03-16

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
  • fHLvlxbf 1楼
    e
    Chrome | Windows 10 2023-07-24
随便看看 换一批