【云原生 | Kubernetes 实战】12、K8s 四层代理 Service 入门到企业实战应用(下)

目录

一、创建 Service:type 类型是 NodePort

1.1 创建一个 pod 资源

1.2 创建 service,代理 pod

在集群外访问 service:

数据转发流程: 

二、创建 Service:type 类型是 ExternalName

2.1 创建 pod  

2.2 创建 service 

2.3 创建默认空间下的 service

2.4 访问名称解析

三、k8s 最佳实践:映射外部服务案例分享

3.1 k8s 集群引用外部的 mysql 数据库

在 node2 上安装 mysql 数据库:

创建 endpoint 资源

四、Service 服务发现:coredns 组件详解 

DNS 是什么?

CoreDNS 是什么?

验证 coredns


 

一、创建 Service:type 类型是 NodePort

1.1 创建一个 pod 资源

[root@k8s-master01 ~]# vim pod_nodeport.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-nodeport
spec:
  selector:
    matchLabels:
      run: my-nginx-nodeport
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx-nodeport
    spec:
      containers:
      - name: my-nginx-nodeport-container
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

[root@k8s-master01 ~]# kubectl apply -f pod_nodeport.yaml
deployment.apps/my-nginx-nodeport created

# 删除上一篇文章创建的 pod
[root@k8s-master01 ~]# kubectl delete -f pod_test.yaml 
deployment.apps "my-nginx" deleted

[root@k8s-master01 ~]# kubectl get pods -o wide 
NAME                                 READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
my-nginx-nodeport-7486c46445-4jldx   1/1     Running   0          56s   10.244.169.148   k8s-node2              
my-nginx-nodeport-7486c46445-cbrjk   1/1     Running   0          56s   10.244.36.126    k8s-node1              

1.2 创建 service,代理 pod

[root@k8s-master01 ~]# vim service_nodeport.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-nginx-nodeport
  labels:
    run: my-nginx-nodeport
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80    # 默认情况下,为了方便起见,`targetPort` 被设置为与 `port` 字段相同的值。
    nodePort: 30380   # 默认情况下,为了方便起见,Kubernetes 控制平面会从某个范围内分配一个端口号(默认:30000-32767) 
  selector:
    run: my-nginx-nodeport

# 更新资源清单文件
[root@k8s-master01 ~]# kubectl apply -f service_nodeport.yaml 
service/my-nginx-nodeport created

# 查看刚才创建的 service
[root@k8s-master01 ~]# kubectl get svc -l run=my-nginx-nodeport
NAME                TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
my-nginx-nodeport   NodePort   10.102.2.76           80:30380/TCP   81s

# 访问 service
[root@k8s-master01 ~]# curl 10.102.2.76



Welcome to nginx!