最新k8s学习 — (实践)第五章 服务发现,腾讯Golang面试题
metadata:labels:spec:ports:- name: http # service 端口配置的名称protocol: TCP # 端口绑定的协议,支持 TCP、UDP、SCTP,默认为 TCPport: 80 # service 自己的端口targetPort: 9527 # 目标 pod 的端口port: 443selector: # 选中当前 service 匹配哪些 pod,
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
※ 各章节重要知识点
1 Service
负责东西流量(同层级/内部服务网络通信)的通信。
1.1 Service 的定义
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
labels:
app: nginx-svc
spec:
ports:
- name: http # service 端口配置的名称
protocol: TCP # 端口绑定的协议,支持 TCP、UDP、SCTP,默认为 TCP
port: 80 # service 自己的端口
targetPort: 9527 # 目标 pod 的端口
- name: https
port: 443
protocol: TCP
targetPort: 443
selector: # 选中当前 service 匹配哪些 pod,对哪些 pod 的东西流量进行代理
app: nginx
1.1.1 命令操作
# 创建 service
kubectl create -f nginx-svc.yaml
# 查看 service 信息,通过 service 的 cluster ip 进行访问
kubectl get svc
# 查看 pod 信息,通过 pod 的 ip 进行访问
kubectl get po -owide
# 创建其他 pod 通过 service name 进行访问(推荐)
kubectl exec -it busybox -- sh
curl http://nginx-svc
# 默认在当前 namespace 中访问,如果需要跨 namespace 访问 pod,则在 service name 后面加上 .<namespace> 即可
curl http://nginx-svc.default
1.1.2 Endpoint
1.2 代理 k8s 外部服务
实现方式:
- 编写 service 配置文件时,不指定 selector 属性
- 自己创建 endpoint
endpoint 配置:
apiVersion: v1
kind: Endpoints
metadata:
labels:
app: wolfcode-svc-external # 与 service 一致
name: wolfcode-svc-external # 与 service 一致
namespace: default # 与 service 一致
subsets:
- addresses:
- ip: <target ip> # 目标 ip 地址
ports: # 与 service 一致
- name: http
port: 80
protocol: TCP
1.2.1 各环境访问名称统一
1.2.2 访问 k8s 集群外的其他服务
1.2.3 项目迁移
1.3 反向代理外部域名
apiVersion: v1
kind: Service
metadata:
labels:
app: wolfcode-external-domain
name: wolfcode-external-domain
spec:
type: ExternalName
externalName: www.wolfcode.cn
1.4 常用类型
1.4.1 ClusterIP
只能在集群内部使用,不配置类型的话默认就是 ClusterIP。
1.4.2 ExternalName
返回定义的 CNAME 别名,可以配置为域名。
1.4.3 NodePort
会在所有安装了 kube-proxy 的节点都绑定一个端口,此端口可以代理至对应的 Pod,集群外部可以使用任意节点 ip + NodePort 的端口号访问到集群中对应 Pod 中的服务。
当类型设置为 NodePort 后,可以在 ports 配置中增加 nodePort 配置指定端口,需要在下方的端口范围内,如果不指定会随机指定端口
端口范围:30000~32767
端口范围配置在 /usr/lib/systemd/system/kube-apiserver.service 文件中
1.4.4 LoadBalancer
使用云服务商(阿里云、腾讯云等)提供的负载均衡器服务。
2 Ingress
Ingress 大家可以理解为也是一种 LB 的抽象,它的实现也是支持 nginx、haproxy 等负载均衡服务的。
2.1 安装 ingress-nginx
https://kubernetes.github.io/ingress-nginx/deploy/#using-helm
2.1.1 添加 helm 仓库
# 添加仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# 查看仓库列表
helm repo list
# 搜索 ingress-nginx
helm search repo ingress-nginx
2.1.2 下载包
![img](https://img-blog.csdnimg.cn/img_convert/466160519a7a2c163e3f2184643e7e53.png)
![img](https://img-blog.csdnimg.cn/img_convert/ad9835974155d9918dec9dde2dcc5f5c.png)
![img](https://img-blog.csdnimg.cn/img_convert/e9242f4ee28aaef4de66afc7b27cdab1.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**
(img-cZiSDZEL-1715572676539)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**
更多推荐
所有评论(0)