官网地址: 服务(Service) | Kuberneteshttps://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/services-networking/service/
kubelet管理容器生命周期 kube-proxy是管理网络流量的
4. 可以用ip a 查看网络信息(会出现虚拟网卡ipvs0)
IPVS模式下,kube-proxy会在service创建后,在宿主机上添加一个虚拟网卡并分配service IP
5. 查看策略
kube-proxy通过linux的IPVS模块,以rr轮询的方式调度service中的pod
1. 改为主机网关模式并删除pod自动重建使其生效
此时查看已经生效
3. 通过之前deployment控制器创建pod并使其生效
7. 查看dns解析
2. headless通过svc名称访问,由集群内dns提供解析
在每个集群节点设置了端口,只要访问给定的端口就可以访问服务
2. 应用后查看svc (nodeport就是在ClusterIP上绑了一个端口)
3. 也可以直接修改类型 kubectl edit svc my-nginx
访问集群任何一个节点端口时候,流量就到达集群,然后转发到集群内的vip
5. 指定端口方法 vim /etc/kubernetes/manifests/kube-apiserver.yaml
(nodeport默认端口范围:30000-32767)修改后api-server会自动重启
LoadBalancer在集群外是有负载均衡的,并不是k8s的功能,是从公有云平台分配的地址,直接访问给的地址会直接转发到节点端口nodeport上,在进入到集群内,这样一个服务就可以分配一个地址
1. 创建编辑文件 vim loadbalancer.yaml
2. 应用后查看处于Pending状态表示没有分配IP (只要访问分配的IP就转发到指定端口)
因为公有云要收费 metallb用来实现在私有化搭建的裸机环境中实现负载均衡器的功能,在没有云环境的情况下通过metallb将service暴露到网络环境中,供其他系统访问。
在裸金属环境中模拟云端环境,分配ip
它的作用就是通过k8s原生的方式提供LB(LoadBalancer )类型的Service支持,开箱即用。
官网: MetalLB, bare metal load-balancer for Kubernetes
1. 修改配置文件 kubectl edit configmap -n kube-system kube-proxy
3. 下载部署文件
wget https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml
4. 编辑文件 将两个镜像路径修改和仓库一致 新创建的目录 metallb/vim metallb-native.yaml
再做一些应用迁移时候常用,有的应用在集群内,有的应用在集群外,一般用来迁移应用.外部资源变更的时候我们只需要更改资源设置就行,而不用变更我们的应用连接
1. 创建编辑文件 vim externalname.yaml
Ingress | Kuberneteshttps://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/
(2)下载官方地址:Installation Guide - Ingress-Nginx Controller (kubernetes.github.io)
(3)开始部署实验环境
5. 将my-nginx控制器loadbalancer模式改为ClusterIP
方便实验将这里修改,因为Clusterip只能在集群内访问,为了测试Ingress功能,用ingress七层方式把应用暴露出去
开始Ingress控制器环节
2. 创建编辑文件并应用 vim myapp-deploy.yaml
当访问不同域名的时候定义到不同的svc上
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
ingressClassName: nginx
rules:
- host: nginx.westos.org
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: my-nginx
port:
number: 80
- host: myapp.westos.org
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: my-myapp
port
number: 80
4. Ingress规则必须和上面创建的两个svc必须处于同一个namespace
Basic Authentication - Ingress-Nginx Controller (kubernetes.github.io)https://kubernetes.github.io/ingress-nginx/examples/auth/basic/
1. 生成自签名证书 2.上面生成的tls两个文件在操作系统中存放,要让集群能够识别到,create将其创建为集群的资源
3. 编辑文件添加模块后应用文件并详情查看是否成功 vim ingress.yaml
3.编辑文件添加模块后应用文件并详情查看是否成功 vim ingress.yaml
1. 编辑文件添加参数后应用 vim ingress.yaml