K8s暴露内部服务的多种方式

测试yaml:

测试yaml:

端口转发利用的是Socat的功能,这是个神奇的工具,你值得拥有: Socat

之前都是直接将pod上的应用暴露出去,这种方式在实际的生产环境中基本不可取,标准的搞法是基于Service。

Service有三种类型:ClusterIP、NodePort、LoadBalancer。

首先,先了解下Service中端口的概念:

port/nodeport/targetport

port ——Service暴露在Cluster IP上的端口,也就是虚拟IP要绑定的端口。port是提供给集群内部客户端访问Service的入口。

nodeport ——K8s集群暴露给集群外部客户访问Service的入口。

targetport ——是Pod内容器的端口。从port和nodeport上进入的数据最终会经过Kube-proxy流入到后端pod里容器的端口,如果targetport没有显示声明,那么会默认转发到Service接受请求的端口(和port端口保持一致)。

通过Service暴露内部服务的方式有四种:ClusterIP、NodePort、LoadBalancer、Ingress

ClusterIP其实是Service的缺省类型,就是默认类型,例如之前部署的dashboard插件其实就使用是这种类型,可以通过如下指令来分辨:

所以,这种类型的Service本身是不会对集群外暴露服务的,但是却单单可以通过K8s Proxy API来访问。Proxy API是一种特殊的API,Kube-APIServer只代理这类API的HTTP请求,然后将请求转发到某个节点上的Kubelet进程监听的端口上,最后有该端口上的REST API响应请求。

在集群外部访问,需要借助于kubectl,所以集群外的节点必须配置了经过认证的kubectl,可以参看kubectl的配置章节:

这种方式要求访问节点必须具备受认证的kubectl,所以只能用做调试使用。

NodePort是基于ClusterIP的方式来暴露服务的,不过不需要kubectl的配置,他是在每一个node上都监听同一个端口,该端口的访问都会被引导到Service的ClusterIP,后续的方式和ClusterIP的方式是一样的,例子如下:

访问nodeIP:NodePort的时候出现了pod所在的node是OK的,其他的Node访问被拒绝,原因和Docker的版本有关,参看 kubernets nodeport 无法访问 ,解决方案就是在其他的Node上修改FORWARD的链生成规则:

这样就可以访问了:

只能在Service上定义,LoadBalancer是一些特定公有云提供的负载均衡器,需要特定的云服务商提供,比如:AWS、Azure、OpenStack 和 GCE (Google Container Engine) 。这里略过不谈。

与之前的暴露集群Service的方式都不同,Ingress其实不是一种服务。它位于多个服务之前,充当集群中的智能路由器或入口点。类似于Nginx提供的反向代理,其实官方推荐的方式就是Nginx的实现方式。这里以Nginx-Ingress的思路来构建。

Ingress的功能需要两个部分组成,一个是Nginx做网络的7层路由,一个是Ingress-controller来监听ingress rule的变化实时更新nginx的配置,所以在k8s的集群里为了实现Ingress都必须要部署一个Ingress-controller的pod,可以使用官网的套路:

到这一步,Ingress的集群配置已经做完了,接下来进行测试,通过Ingress暴露两个内部的Nginx服务:

然后,给这两个服务配置Ingress规则:



  • K8S鐨勫悇绉IP鍜孭ort
    绛旓細瀹冩槸Service鐨鍦板潃,鏄竴涓櫄鎷熷湴鍧锛堟棤娉昿ing锛夛紝鏄娇鐢 kubectl create 鏃讹紝--port 鎵鎸囧畾鐨勭鍙g粦瀹氱殑IP,鍚凷ervice涓殑pod閮藉彲浠ヤ娇鐢–LUSTER-IP:port鐨鏂瑰紡鐩镐簰璁块棶锛堝綋鐒舵洿搴旇浣跨敤ServiceName:port鐨勬柟寮忥級鍙互浣跨敤鈥榢ubectl get svc鈥欒繘琛屾煡鐪嬨傝繖鏄澶鏆撮湶鍑虹殑鍦板潃锛屽畠鍦∟ode鍜孲ervice鐨勯厤缃夐」涓兘...
  • kubernetes闆嗙兢鎬庝箞璁块棶澶栭儴鐨鏈嶅姟mysql,redis
    绛旓細k8s璁块棶闆嗙兢澶栫嫭绔嬬殑鏈嶅姟鏈濂鐨勬柟寮鏄噰鐢‥ndpoint鏂瑰紡(鍙互鐪嬩綔鏄皢k8s闆嗙兢涔嬪鐨勬湇鍔℃娊璞′负鍐呴儴鏈嶅姟)锛屼互mysql鏈嶅姟涓轰緥锛氬垱寤簃ysql-endpoints.yaml apiVersion: v1 kind: Endpoints metadata:name: mysql-test namespace: default subsets:- addresses: - ip: 10.1.0.32 ports:- port: 3306...
  • 璁$畻鏈虹綉缁-k8s缃戠粶
    绛旓細K8S缃戠粶妯″瀷璁捐:鎵佸钩鐨勫彲杩為氱殑缃戠粶 K8S鐨缃戠粶鏄竴涓瀬鍏跺鏉傜殑缃戠粶,濡傛灉鎯宠鐢ㄤ袱涓畝鍗曠殑璇嶆潵鎻忚堪K8S缃戠粶,閭d箞鎴戣寰楁墎骞冲拰鍙繛閫氭槸K8S缃戠粶鏈澶х殑鐗圭偣(涓嶆噦闅旂鎬)銆 浣曚负杩為氬憿? 浜屽眰缃戠粶鐨勮繛閫:濡傛灉鑳藉鐩存帴閫氳繃MAC甯х洿鎺ラ氫俊鐨勭綉缁滀究鏄簩灞傝繛閫氱殑缃戠粶,LAN灏辨槸杩欑缃戠粶 姣斿鏃犻檺WIFI缃戠粶,姣斿浠ュお缃 涓夊眰缃...
  • 8. K8s 璧勬簮閮ㄧ讲
    绛旓細閫氳繃闆嗙兢鐨鍐呴儴 IP 鏆撮湶鏈嶅姟锛岄夋嫨璇ュ兼椂鏈嶅姟鍙兘澶熷湪闆嗙兢鍐呴儴璁块棶銆 杩欎篃鏄粯璁ょ殑 ServiceType銆傞氳繃姣忎釜鑺傜偣涓婄殑 IP 鍜岄潤鎬佺鍙o紙NodePort锛夋毚闇叉湇鍔° NodePort 鏈嶅姟浼氳矾鐢卞埌鑷姩鍒涘缓鐨 ClusterIP 鏈嶅姟銆 閫氳繃璇锋眰 <Node鑺傜偣 IP>:<鑺傜偣绔彛>锛屼綘鍙互浠庨泦缇ょ殑澶栭儴璁块棶涓涓 NodePort 鏈嶅姟銆侼odePort绫诲瀷鐨...
  • k8s鏄粈涔堟剰鎬濆晩
    绛旓細K8s鏄粈涔堟剰鎬濆晩锛烱ubernetes鑳藉璁╃敤鎴峰湪鐗╃悊銆佽櫄鎷熷拰浜戠幆澧冧腑绠$悊瀹瑰櫒搴旂敤锛岃屼笉蹇呮媴蹇冨簳灞傚熀纭璁炬柦鐨勭粏鑺傘傚畠鎻愪緵浜嗕竴绉嶆槗浜庝娇鐢ㄥ拰鐏垫椿鐨凙PI锛屼娇鐢ㄦ埛鍙互杞绘澗鍦伴儴缃层佹墿灞曞拰绠$悊瀹瑰櫒搴旂敤绋嬪簭銆傛澶栵紝K8s杩樻敮鎸澶氱瀛樺偍銆佺綉缁滃拰瀹夊叏鎻掍欢锛屼负閮ㄧ讲搴旂敤绋嬪簭鎻愪緵浜嗘洿澶氶夋嫨銆侹8s鏄粈涔堟剰鎬濆晩锛烱ubernetes鍏锋湁寮哄ぇ鐨...
  • Kubernetes鈥斺Service(SVC)鏈嶅姟
    绛旓細Service鑳藉鎻愪緵璐熻浇鍧囪 鐨勮兘鍔涳紝浣嗘槸鍦ㄤ娇鐢ㄤ笂鏈変互涓嬮檺鍒讹細Service 鍦 K8s 涓湁浠ヤ笅鍥涚绫诲瀷 svc鍩虹瀵艰 鍦 Kubernetes 闆嗙兢涓紝姣忎釜 Node 杩愯涓涓猭ube-proxy杩涚▼銆俴ube-proxy璐熻矗涓篠ervice瀹炵幇浜嗕竴绉峍IP锛堣櫄鎷 IP锛鐨勫舰寮锛岃屼笉鏄疎xternalName鐨勫舰寮忋傚湪 Kubernetes v1.0 鐗堟湰锛屼唬鐞嗗畬鍏ㄥ湪 userspace銆傚湪...
  • 璁:k8s鍐呴儴鏈嶅姟璋冪敤杩炴帴瓒呮椂
    绛旓細杩欓噷鑷繁璧颁簡寮矾鍚庢潵鑷繁鎵嶆兂鏄庣櫧鏄庝箞鍥炰簨锛岀綉涓婅鐨勪慨鏀 calico.yaml 鏂囦欢锛屾槸鎸囬儴缃 calico 鏃剁殑閭d釜鏂囦欢銆備慨鏀逛箣鍚庨噸鏂伴儴缃 calico 锛氭寜鐓т笂杩鏂规硶搴旇灏辫兘瑙e喅闂浜嗐備笅闈㈣涓嬫垜褰撴椂鐨勬搷浣滐紙鐜板湪鍥炴兂鎰熻鑷繁SB锛夈傚洜涓哄綋鏃k8s涓婃瘡涓妭鐐归兘宸茬粡閮ㄧ讲浜 calico 锛屾墍浠ユ垜涓寮濮嬫槸鎯崇殑鐩存帴淇敼鏈嶅姟鍣ˋ鐨...
  • k8s楂樺彲鐢ㄩ儴缃:keepalived + haproxy
    绛旓細鏈杩戜緷鐓х綉涓婁笉灏戞枃绔犻儴缃K8s楂樺彲鐢ㄩ泦缇わ紝閬囧埌浜嗕竴浜涢夯鐑︼紝鍦ㄨ繖閲岃褰曚笅鏉ャ傛牴鎹甂8s瀹樻柟鏂囨。灏咹A鎷撴墤鍒嗕负涓ょ锛孲tacked etcd topology锛堝爢鍙燛TCD锛夊拰External etcd topology锛堝閮‥TCD锛夈 https://kubernetes.cn/docs/setup/production-environment/tools/kubeadm/ha-topology/#external-etcd-topology 鍫嗗彔ETCD ...
  • 寮鍙戝拰杩愮淮瀵K8S涓殑搴旂敤閮藉仛浜嗕粈涔?
    绛旓細褰撴帴鏀跺埌SIG淇″彿鐨勬椂鍊欙紝灏变細璋冪敤 Shutdown 鏂规硶鍋氬簲鐢ㄩ鍑哄鐞嗐傞櫎姝わ紝杩樿缁撳悎K8S鐨 PreStop Hook 鏉ュ畾涔夌粨鏉熷墠鐨勯挬瀛愶紝濡備笅锛氬鏋滀娇鐢ㄦ敞鍐屼腑蹇冿紝姣斿nacos锛屾垜浠彲浠ュ湪 PreStop Hook 涓厛鍛婅瘔nacos瑕佷笅绾匡紝濡備笅锛歁etrics涓昏鐢ㄦ潵鏆撮湶搴旂敤鎸囨爣锛屽彲浠ユ牴鎹疄闄呮儏鍐佃嚜瀹氫箟鎸囨爣锛屼互渚夸簬鐩戞帶宸ュ叿Prometheus杩涜鏁版嵁...
  • docker+k8s绠浠
    绛旓細Deployment 涓 Pod 鍜 ReplicaSet 鎻愪緵浜嗕竴涓0鏄庡紡瀹氫箟(declarative)鏂规硶锛岀敤鏉ユ浛浠d互鍓嶇殑ReplicationController 鏉ユ柟渚跨殑绠$悊搴旂敤銆傚吀鍨嬬殑搴旂敤鍦烘櫙鍖呮嫭锛氣Service鈥 绠鍐 鈥渟vc鈥濄傚涓婃枃鎻愬埌鐨勶紝Pod涓嶈兘鐩存帴鎻愪緵缁欏缃戣闂紝鑰屾槸搴旇浣跨敤service銆係ervice灏辨槸鎶奝od鏆撮湶鍑烘潵鎻愪緵鏈嶅姟锛孲ervice鎵嶆槸鐪熸鐨勨滄湇鍔...
  • 扩展阅读:m自调任务表 ... k8字母圈需要怎么调 ... k1比较刺激的玩法 ... m网调在家可以做的任务 ... s给m的任务表k6 ... m自罚任务飞行棋 ... 8个k9基础姿势 ... s给m的任务表室内网调 ... 圈内k8怎么玩 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网