K8s之traefik(ingess)发布服务-实战
发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,K8s之traefik(ingess)发布服务实战上篇描述了基于k8s集群安装部署traefik作为ingress服务,简单演示了一下发布服务,本篇将细节讲述如果结合traefik发布业务服务。安装部
千家信息网最后更新 2025年01月27日K8s之traefik(ingess)发布服务-实战
K8s之traefik(ingess)发布服务实战
上篇描述了基于k8s集群安装部署traefik作为ingress服务,简单演示了一下发布服务,本篇将细节讲述如果结合traefik发布业务服务。
安装部署参考:
https://blog.51cto.com/michaelkang/2429929
版本介绍
traefik:v1.7k8s:v1.15.1
快速部署traefik
如果你的k8s集群已经部署完成,想快速部署traefik,执行命令如下:
kubectl create -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-rbac.yamlkubectl create -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-ds.yaml执行成功,在浏览器数据一个node节点的IP地址:8080 端口即可看到traefik的管理页面。
实战开始
编写一个业务yaml文件
如果对yaml不太熟悉,看这边:https://blog.51cto.com/michaelkang/2429745
---#配置deploymentkind: DeploymentapiVersion: extensions/v1beta1metadata:#设置dm名称 name: dm-pttest#添加标签 pttest labels: app: pttestspec:# 通过replicas声明pod个数是2 replicas: 2# 通过标签选择被控制的pod selector: matchLabels: app: pttest# 在template中定义pod template: metadata:# 给pod打上标签app=pttest labels: app: pttest spec: containers:# 声明容器名称,注意不是pod名称,pod名称应该定义在metadata中 - name: myapp image: ikubernetes/myapp:v1 ports: - containerPort: 80---#服务配置apiVersion: v1# 声明一个Service资源对象kind: Servicemetadata:#pod 名称 name: svcpttest labels: app: pttest annotations:#检查后端服务返回错误率,大于%50,踢出集群 traefik.backend.circuitbreaker: "NetworkErrorRatio() > 0.5"spec: ports: - name: http port: 80 selector: app: pttest---#配置ingressapiVersion: extensions/v1beta1kind: Ingressmetadata: name: myapp-traefik-ingress annotations: kubernetes.io/ingress.class: traefikspec: rules: - host: pttest.pt.com http: paths: - path: /#指定后端服务 backend: serviceName: svcpttest servicePort: 80
验证服务
#查看服务[root@kubm-02 traefik]# kubectl get svc -o wideNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTORsvcpttest ClusterIP 10.245.148.114 80/TCP 2m12s app=pttest <==lable#查看container[root@kubm-02 traefik]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESdm-pttest-6f6cd797f5-cdjk5 1/1 Running 0 63s 10.244.3.115 kubnode-01 dm-pttest-6f6cd797f5-tqh64 1/1 Running 0 63s 10.244.4.135 kubnode-02 #ingress 信息[root@kubm-02 traefik]# kubectl get ingress NAME HOSTS ADDRESS PORTS AGEmyapp-traefik-ingress pttest.pt.com 80 23s#deployment[root@kubm-02 traefik]# kubectl get deployNAME READY UP-TO-DATE AVAILABLE AGEdm-pttest 2/2 2 2 12m
验证访问:
请求pttest.pt.com, 服务svcpttest会把请求负载给后端的pod。
#请求两次分别返回两个[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-cdjk5[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-tqh64
扩容节点
kubectl edit deployment dm-pttest
apiVersion: extensions/v1beta1kind: Deploymentmetadata: annotations: deployment.kubernetes.io/revision: "1" creationTimestamp: "2019-08-16T10:13:49Z" generation: 1 labels: app: pttest name: dm-pttest namespace: default resourceVersion: "3871589" selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/dm-pttest uid: 153a60fb-66df-4884-aa9a-49ac47cebd2cspec: progressDeadlineSeconds: 2147483647 replicas: 5 《=====pod数量,有默认2个,调整到5个保存退出,k8s集群会自动执行;
验证
kubectl get pods
[root@kubm-02 traefik]# kubectl get podsNAME READY STATUS RESTARTS AGEdm-pttest-6f6cd797f5-cdjk5 1/1 Running 0 17mdm-pttest-6f6cd797f5-qd4cl 1/1 Running 0 99sdm-pttest-6f6cd797f5-r25dc 1/1 Running 0 99sdm-pttest-6f6cd797f5-tbfmh 1/1 Running 0 99sdm-pttest-6f6cd797f5-tqh64 1/1 Running 0 17m#请求[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-r25dc[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-tbfmh[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-tqh64[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-cdjk5[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-qd4cl[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-r25dc[root@kubm-02 traefik]# curl -H "HOST:pttest.pt.com" http://172.20.101.166/hostname.htmldm-pttest-6f6cd797f5-tbfmh
使用命令调整pod数量
调整pod数量为1;kubectl scale deployment dm-pttest --replicas=1调整pod数量为2;kubectl scale deployment dm-pttest --replicas=2
参考文档
https://kubernetes.io/zh/docs/concepts/services-networking/connect-applications-service/
https://blog.csdn.net/u010606397/article/details/90752262
服务
名称
数量
集群
调整
标签
配置
验证
实战
业务
命令
节点
参考
成功
上篇
两个
个数
信息
发布业务
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
绝地求生服务器技术
有声小说怎么上传服务器
思迅总部数据库名字
浙江软件开发哪里好
该数据库表数据类型
江西小众软件开发
黄石市网络安全宣传周答题
服务器调整等保需要重新定级么
google软件开发商
2018网络安全测试答案
工作场所的网络技术
电子发票手工上传服务器
腾讯网络安全影响
单位网络安全培训教育方案
3层的ip网络技术
数据库习题3
按键精灵自动导入数据库
软件开发进项怎么降低
软件开发哪家好又便宜
什么是网络技术发展的动力
网互联网科技有限公司怎么样
linux服务器开发中网络分析
软件开发的瀑布模型包括
服务器调整等保需要重新定级么
u8数据库服务器配置
中国科技部的创新企业数据库
dell服务器自动
机架式服务器可以装几个操作系统
营运网络安全检查表
云南数据网络安全工程问答知识