首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏CNCF

    简单5步,轻松debug K8s服务

    在Kubernetes中,服务是一个核心概念。在本文中,将介绍如何调试K8S服务,这些服务是由多个Pod组成的工作负载的抽象接口(主机+端口)。 K8S网络(来源:wikipedia.org) 在图中: 位于Pod1中的容器B可以直接作为localhost寻址容器A 容器B可以通过其IP直接寻址Pod2(kubectl get pod -o wide 接下来,容器B可以通过Service x访问pod 2和pod 3,后者将它们的IP与负载均衡捆绑在一起;因此,在K8S上支持基于微服务的应用程序起着至关重要的作用 尽管对Kubernetes的内部网络结构的检查不在本文的讨论范围内 Step5:确认服务端口与pod相匹配 最后,确保在你的pod中的代码能够监听到你为服务指定的targetPort(例如,你在上方截图中看到的port8001)! Rai,性能、可扩展性以及软件架构的爱好者 原文链接: https://medium.com/better-programming/debug-your-kubernetes-service-in-5-

    73510发布于 2020-06-16
  • 来自专栏golang云原生new

    k8s 自身原理 5

    我们知道容器是通过 pod 来承载的,我们在 k8s 中,服务都是跑在 pod 里面的,pod 里面可以跑 1 个容器,或者跑多个容器,那么咱们 pod 里面跑 1 个服务容器,咱真的就以为里面就只有这样个容器吗 假如咱们 pod 里面只运行我们的一个服务的时候,也就是里面只运行一个容器,那么实际上里面是有几个容器呢? 上述有说到一个 pod 里面的所有容器都会共享这个基础容器保存的命名空间 咱们自己加入的容器,做服务,可能会有挂的时候,也会有重启的时候,放咱们的服务容器重启启动时,还是需要之前的 Linux 命名空间

    15330编辑于 2023-09-01
  • 来自专栏无量测试之道

    K8s服务编排

    前置说明: k8s_host=192.168.214.50 //定义k8s_host变量,此ip为k8s管理机 yaml_host=192.168.214.100:9999 //相关服务的配置存放机 的管理机上,为服务生成service服务代理 ''' k8s分配给Service一个固定IP,这是一个虚拟IP(也称为ClusterIP),并不是一个真实存在的IP,而是由k8s虚拟出来的。 properties │   ├── logback.xml │   └── sysconfigs │       └── zk.properties └── svc.yaml 2 directories, 5 classes  拷贝此目录下的内容到/opt/scripts/yaml/test/backends 此目录下来,修改zk 配置地址信息 修改在svc.yaml 此文件中修改配置的端口信息 step5. Jenkins调用k8s服务部署到K8s集群中去 jenkins_job: 编译代码并生成镜像,且上传到镜像仓库 ---- namespace='test'  //定义一个变量 mvn clean

    59120编辑于 2022-07-04
  • 来自专栏桃子小白

    k8s】service服务和job服务

    Service服务发现 使用Service 使用Service实验使用的目录病创建后端的httpd-Dy [root@master servicefile]# vim httpd-dy.yaml kind 创建httpd-service.yaml文件 [root@master servicefile]# vim httpd-service.yaml 创建service并查看该信息(下kubernetes服务是系统服务 ) 测试服务可用性,通过curl命令查看服务是否正常 [root@master servicefile]# curl 10.102.124.67:8080 可以删除刚刚创建的服务 创建httpd-expose.yaml     - sleep 30000 创建并进入Pod命令行 [root@master servicefile]# kubectl apply -f client.yaml 使用nslookup命令查看服务域名 ,wget命令通过域名访问服务 实训任务 创建deployment1 要求: 2 副本,镜像类型 httpd 创建deployment2 要求: 3副本,镜像类型 httpd 创建 service1

    62120编辑于 2023-06-10
  • 来自专栏架构师成长之路

    k8s实践(5k8s的命名空间Namespace

    因为,这种复杂系统中,团队会非常容易意外地或者无意识地重写或者中断其他服务service。相反,请创建多个命名空间来把你的服务service分割成更容易管理的块。 5、案例 创建一个测试namespace test-limitrange,创建LimitRange定义文件 lr-test.yaml: apiVersion: v1 kind: LimitRange metadata 小团队 这种场景下,你一般运作5 - 10 个微服务,很容易做到管理这些服务。这种情况下,你将所有的服务创建在default空间中是合理的。 快速增长的团队 这种场景下,你带领一个快速增长的团队运作 10+个微服务。你将团队分成很多子团队负责各自的微服务。 某个组也可能是外部公司,服务之间通过标准文档定义的API来通信。 每个小组都有多个拥有一定数量微服务的团队。 这时使用我上面提到的所有工具是必要的。

    6.2K41编辑于 2022-04-14
  • 来自专栏容器云实践

    prometheus k8s服务发现

    同样在Prometheus监控中存在一个叫 服务发现的机制,在k8s容器环境中由于集群内实例网络地址是动态的,我们不可能每次创建或修改实例都将实例IP写入Prometheus的target中,借助 服务发现我们可以快速的将集群内的资源注册到 服务发现 gcesdconfigs: GCE 服务发现 ec2sdconfigs: EC2 服务发现 openstacksdconfigs: OpenStack 服务发现 azuresdconfigs Prometheus中k8s服务发现的原理是通过 Kubernetes 的REST API 检索抓取目标,并始终与集群状态保持同步。 所以我们需要配置Kubernetessdconfigs来访问K8s API 比如我们要抓取k8s ingress,需要为Prometheus指定用于RBAC认证证书和serviceaccount的token 以上通过kubernetes-apiservers、kubernetes-nodes的实例简单介绍了Prometheus中如何实现k8s集群资源的服务发现以及相应的配置和操作。

    2.3K30编辑于 2022-03-14
  • 来自专栏日常笔记

    K8S 服务暴露方式

    NodePort NodePort在kubenretes里是一个广泛应用的服务暴露方式。 这种服务暴露方式,无法让你指定自己想要的应用常用端口,不过可以在集群上再部署一个反向代理作为流量入口。 LoadBalancer LoadBalancer 只能在service上定义。 S) AGE influxdb 10.97.121.42 10.13.242.236 8086:30051/TCP 39s 内部可以使用ClusterIP加端口来访问服务 外部可以用以下两种方式访问该服务: 使用任一节点的IP加30051端口访问该服务 使用EXTERNAL-IP来访问,这是一个VIP,是云供应商提供的负载均衡器IP,如10.13.242.236:8086 总结 总的来说Ingress是一个非常灵活和越来越得到厂商支持的服务暴露方式,包括Nginx、HAProxy、Traefik,还有各种Service Mesh,而其它服务暴露方式可以更适用于服务调试、特殊应用的部署

    3.6K50发布于 2020-06-02
  • 来自专栏灰子学技术

    K8S服务注册

    本文主要用来介绍K8S服务注册和发现,算是笔者对这部分知识的一个学习笔记。 一、服务注册 每个 Kubernetes 服务都会自动注册到集群 DNS 之中。 备注: Kubernetes 使用 DNS 作为服务注册表。 为了满足这一需要,每个 Kubernetes 集群都会在 kube-system 命名空间中用 Pod 的形式运行一个 DNS 服务,通常称之为集群 DNS。 DNS 中注册的名称就是 metadata.name,而 ClusterIP 则由 Kubernetes 自行分配,参考下面的例子: 二、服务发现 第一步:服务获取ClusterIP 要使用服务发现功能 假设它们本地的 DNS 解析缓存中没有这个记录,则需要把查询提交到集群 DNS 服务器,会得到对应服务的 ClusterIP(VIP)不过此时的IP是一个虚IP,需要通过后面的Service Network

    2.7K30发布于 2021-09-22
  • 来自专栏知了一笑

    K8S | Service服务发现

    一、背景 在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问; 对于测试「Tes」环境或者生产「Pro」环境,出于安全或者环境隔离性来考虑 ,在正常情况下只会开放网关服务,而「注册、配置」中心并不会对外暴露; 对于架构中的其它业务服务一般不会对外开放,在K8S集群内部服务间是可以正常通信的,对于「Dev」环境来说,研发会使用「注册、配置」中心 ,网关是系统的访问入口; 在K8S集群中,通过Service组件,可以快速简单的实现服务发现和负载均衡; 二、Service组件 1、简介 在K8S集群中是通过Pod组件来部署应用服务,Deployment -9qvgr 1/1 Running 0 39m 10.1.0.162 docker-desktop serve-deployment-f6f6c5bbd-w7nj2 1/1 Running 0 39m 10.1.0.161 docker-desktop serve-deployment-f6f6c5bbd-x7v4d

    49630编辑于 2023-09-01
  • 来自专栏架构师成长之路

    k8s实践(12)--K8s service服务详解

    . 5 IN A 10.244.1.19 myapp-headless.default.svc.cluster.local. 5 IN A 10.244.2.15 myapp-headless.default.svc.cluster.local . 5 IN A 10.244.2.16 myapp-headless.default.svc.cluster.local. 5 IN A 10.244.2.17 ;; Query time: 4 msec 八、集群的服务分类 在K8S运行的服务,从简单到复杂可以分成三类:无状态服务、普通有状态服务和有状态集群服务。下面分别来看K8S是如何运行这三类服务的。 K8S为此开发了一套以StatefulSet(1.5版本之前叫做PetSet)为核心的全新特性,方便了有状态集群服务K8S上的部署和管理。 九(二)、集群服务的存储:K8S的存储系统 ---- K8S的存储系统从基础到高级又大致分为三个层次:普通Volume,Persistent Volume 和动态存储供应。

    11.4K26编辑于 2022-04-14
  • 来自专栏仙士可博客

    k8s学习六-k8s部署go服务

    go代码 写一个最简单的http服务器: package main import (    "flag"    "github.com/gin-gonic/gin"    "net/http"     test % curl 127.0.0.1:8080 This is version:v1 running in pod appledeMacBook-Pro.local% dockerfile 编写go服务的 labels:     app: go spec:   selector:     matchLabels:       app: go   replicas: 3   minReadySeconds: 5               2m20s go-deployment-86f769995d-lz7vf   1/1     Running   0              2m20s nginx-7cbb8cd5d8 在上面的教程中可以看到,我们先将镜像放到了docker hub,才开始进行k8s部署,这样相当于把自己的项目放到了公共的仓库,十分不安全 原因是: k8s有多个节点,如果我们只在一个节点编译镜像,其他节点就无法获取到这个自己编译后的镜像

    1.3K20编辑于 2022-09-13
  • 来自专栏桃子小白

    k8s】将Go服务上传到k8s

    将Go服务发布到k8s集群 首先安装go环境 下载go的tar.gz包 然后下载到虚拟机中,并且解压到/usr/local/src中 //解压缩go包 [root@master ~]# tar -zxf 打包镜像,传到k8s工作节点 [root@master 0607tz]# docker save -o k8sdemo.tar.gz taozheng/k8sdemo:v1 [root@master           path: /           port: 8080         initialDelaySeconds: 10         timeoutSeconds: 2 创建go的服务 name: api     port: 8080     protocol: TCP     targetPort: 8080 selector:   app: k8s-demo k8s 部署 查看pod和服务信息 修改svc的type类型变成nodePort [root@master 0607tz]# kubectl edit svc k8s-demo-svc 保存后再次查看,已经修改成功

    53540编辑于 2023-06-10
  • 来自专栏云原生系列

    k8s系列(5)-Configmap和Secret

    完整系列k8s系列(1)-腾讯云CVM手动部署K8S_Dashboard安装1k8s系列(1)-腾讯云CVM手动部署K8S_Dashboard安装2k8s系列(2)-Servicek8s系列(3)-StatefulSet 的MongoDB实战k8s系列(4)-MongoDB数据持久化k8s系列(5)-Configmap和Secretk8s系列(6)-Helmk8s系列(7)-命名空间k8s系列(8)-Ingressk8s root@master configmap]# kubectl get configmapNAME DATA AGEkube-root-ca.crt 1 5h9mmongo-config READY STATUS RESTARTS AGEmongodb-0 1/1 Running 0 5m23stest-k8s

    63731编辑于 2022-10-21
  • 来自专栏小陈运维

    k8s的无头服务

    k8s的无头服务Headless Services是一种特殊的service,其spec:clusterIP表示为None,这样在实际运行时就不会被分配ClusterIP,也被称为无头服务,通过DNS解析提供服务发现 这种服务使得直接访问单个Pod成为可能,而不经过负载均衡器。 因为 Headless Service 属于 Service ClusterIp 类型,所以在讲解Headless Service前,先简单说下 Service 和服务发现。 Servicemetadata: name: nginx labels: app: nginxspec: ports: - port: 80 name: web clusterIP: None #这使得服务成为无头服务 如果想让部署的有状态应用暴露给集群外部客户端访问的话,可以新建个普通(有ClusterIP)的服务,通过标签选择关联有状态服务实例。

    37110编辑于 2024-11-17
  • 来自专栏日常笔记

    Spring cloud k8s 服务发现

    spring-cloud-kubernetes 在K8s集群中,没有必要拥有Eureka。K8s中的ETCD拥有所有必要的信息。 您的应用程序将通过指定的K8s服务名称联系K8s API服务器以获取端点信息。 然后可以通过Feign调用返回的服务。 要让DiscoveryClient正常运行,您需要做的 就是将Kubernetes服务名称与spring.application.name属性对齐。

    77550发布于 2020-06-02
  • 来自专栏运维小路

    Kubernetes(k8s)-服务(Service)介绍

    k8s就给我们抽象一个资源叫做服务Service,简称svc,我们通过访问svc,然后来实现负载均衡访问多个后端,并且还能随着pod的增加或者减少自动调整后端rs。 Service基本概念 在Kubernetes (k8s) 中,Service是一个抽象概念,它定义了一种访问和暴露一组运行在Pods中的应用的方法。 其中port:80是服务的端口,targetPort: 80是容器的80端口。 但是如果我们没有相匹配的标签的pod,则这个时候svc是无法被访问的,因为它没有对应的后端。

    1.7K10编辑于 2025-01-08
  • 来自专栏正则

    K8s上部署Go服务

    通过Rancher一键部署k8s服务 地址: https://rancher.com/quick-start/ 命令 sudo docker run --privileged -d --restart ,我不能使用这个集群 点击添加集群,自定义一通默认到最后给你一个docker命令执行后我们就又得到一个自定义的k8s集群了(弄一个单节点集群的话最后一步把3个都要勾选上) 下载kubectl https 集群部署IP:30080 就可以看到熟悉的 nginx 欢迎界面了 在k8s中部署 golang 服务 代码 package main import "net/http" func main() { 运行服务 app.yml apiVersion: apps/v1 kind: Deployment metadata: name: app-deployment labels: app: 集群部署IP:31080/k8s 正常输出结果(hello world k8s) 部署完成

    1K31编辑于 2022-03-17
  • 来自专栏Kubernetes

    K8s】Kubernetes 服务调度详解

    如果您有其他想要了解的,欢迎私信联系我~ 基本介绍 在 Kubernetes 中,服务调度是指 kube-scheduler 组件根据特定的调度算法和策略,将 Pod 分配到最合适的 Node 节点上,

    63710编辑于 2024-09-02
  • 来自专栏匿名用户的日记

    k8s 跨 namespace 访问服务

    K8S中,同一个命名空间(namespace)下的服务之间调用,之间通过服务名(service name)调用即可。 不过在更多时候,我们可能会将一些服务单独隔离在一个命名空间中(比如我们将中间件服务统一放在 middleware 命名空间中,将业务服务放在 business 命名空间中)。 遇到这种情况,我们就需要跨命名空间访问,K8S 对service 提供了四种不同的类型,针对这个问题我们选用 ExternalName 类型的 service 即可。 k8s service 分为四种类型 分别为: ClusterIp(默认类型,每个Node分配一个集群内部的Ip,内部可以互相访问,外部无法访问集群内部) NodePort(基于ClusterIp,另外在每个 要收费的,一般由云服务商提供,比如阿里云、AWS等均提供这种服务) ExternalName(将外部地址经过集群内部的再一次封装,实际上就是集群DNS服务器将CNAME解析到了外部地址上,实现了集群内部访问

    2.7K20编辑于 2021-12-14
  • 来自专栏NetCore 从壹开始

    5-5 各个服务应用启动

    local/nginx --with-http_ssl_module --with-pcre --with-http_gzip_static_module make && make install #然后启动服务 /local/bin/就是环境变量目录 ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/ 4、迁移 nginx.conf 和 SSL证书 将之前的旧服务器里的配置文件和 5、修改域名解析映射 添加解析这块,如果是泛域名或者通用域名解析就很简单的, 但是我这边毕竟是免费的,动动手,十分钟就能解决了的。 等待十分钟,就表示迁移完成了。

    28920编辑于 2023-01-09
领券