Saturday, March 18, 2023

354、Kubernetes 核心实战 服务网络 Service服务发现ClusterIP方式

- servic:port的服务发现与负载均衡

集群内使用service的ip:port 就可以负载均衡的访问, 

服务器内访问- 服务名.所在namespace.svc, 比如my-dep.default.svc

--port 要暴露的port

--type=ClusterIP 集群ip ,集群内部可以访问

kubectl expose deploy my-dep --port=8000 --target-port=80 (--type=ClusterIP)

--type=NodePort 集群外部也可以访问, NodePort 范围在30000 - 32767之间

kubectl expose deploy my-dep --port=8000 --target-port=80 (--type=NodePort)

查看先运行的service

kubectl get svc

删除service

kubectl delete svc my-dep


需要自己安装Ingress

测试环境





kubectl apply -f theyam.yaml

域名访问
yaml 文件

host 就是访问的域名
pathType 就是取前缀还是后缀的
path: "/" 就是域名后面的所有页面,比如 helllo.abc.com/... 






修改一个ingress
如果是修改默认的namespace就可以不用加

kubectl edit ing ingressName --namespace


https://kubernetes.github.io/ingress-nginx/examples/rewrite/


$ echo ' apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: ##要重写的地方 nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/rewrite-target: /$2 ##要重写的地方 $2是通配符后面第二个 name: rewrite namespace: default spec: ingressClassName: nginx rules: - host: rewrite.bar.com http: paths: - path: /something(/|$)(.*) ##这里就是要重写的规则,去掉叫something的东东,把请求会转给下面的服务,
##下面的服务一定能处理这个路径,不能处理就是404error pathType: Prefix backend: service: name: http-svc port: number: 80 ' | kubectl create -f -


 环境准备

1. 所有节点,所有机器安装

yum install -y nfs-utils

2. 主节点


3.从节点


#list all of ip address
ip a

# #2: eth0: ....下面的inet 172.31.0.4就是需要替换掉上面 showmount -e 10.140.122.4 的ip address
# 也就是
showmount -e 172.31.0.4

#挂载目录
mount -t nfs 172.31.0.4:/nfs/data /nfs/data






4. 原生方式数据挂载

mkdir -p /nps/data/01
mkdir -p /nps/data/02
mkdir -p /nps/data/03





在master的root目录里创建vi pv.yaml
然后 kutectl apply -f pv.yaml

2. PVC创建与绑定

更多的

ConfigMap
配置文件挂载
vi redis.conf

#data 是所有真正的数据,key:默认是文件名 value:是配置文件的内容
完全版



查看配置集
kubectl get cm redis-conf -oyaml


创建pot
#command:
- "redis-master/redis.conf" #指的是redis容器内部的位置




检查默认配置
kubectl exec -it redis -- redis-cli

127.0.0.1:6379> CONFIG GET appendonly

配置值未更改,因为需要重新启动Pod才能从关联的ConfigMap中获取更新的值。
原因:我们的Pod部署中间件自己本身没有热更新能力









No comments: