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

    2 3)CentOS搭建K8s服务20条

    no_root_squash:NFS客户端连接服务端时如果使用的是root用户的话,那么对服务端分享的目录来说,也拥有root权限 no_all_squash:不论NFS客户端连接服务端时使用什么用户 访问的域名或IP必须包含在此,否则无效 # 修改为你要保护的域名或者IP地址,支持通配符 [alt_names] DNS.1 = *.anson.cn IP.1 = 192.168.0.66 IP.2 为测试应用添加域名 #添加证书到k8s中 kubectl create secret tls tls-test --cert=test.crt --key=test.key -n default #创建域名访问 version 1.8.0 解压chart包 tar -xzvf harbor-1.8.0.tgz 创建命名空间 kubectl create namespace harbor 生成证书并添加到k8s CAkey root.key -CAserial gitlab.srl -CAcreateserial -in gitlab.csr -out gitlab.crt -days 36500 #添加证书到k8s

    2.7K01编辑于 2023-01-09
  • 来自专栏golang云原生new

    k8s Label 2

    k8s 系列】k8s 学习十六,Label2k8s 中,我们会轻轻松松的部署几十上百个微服务,这些微服务的版本,副本数的不同进而会带出更多的 pod 这么多的 pod ,如何才能高效的将他们组织起来的 ,如果组织不好便会让管理微服务变得混乱不堪,杂乱无章 因此,就有了标签 Label 标签 Label 标签是一种简单的却功能强大的 K8S 的其中一个特性,可以组织 K8S 中的资源,包括 pod 标签是可以被附加到资源的任意键值对的,用来选择具有该确切标签的资源 也就是说,咱们的标签的 key 在资源内部是任意的,可以自己定义,只要是资源内唯一就可以 举个例子 我们可以将上述混乱的多个 pod,定义 2 我们可以很轻易的就可以通过 pod 标签来查看我们期望看到的 pod 状态 写个 demo 就用之前的 xmt-kubia,yaml 文件改改,命名为 xmt-kubia-labels.yaml 加上 2 的思想就不对等了,K8S 中的思想是应用程序隐藏实际的基础架构,在 K8S 中,创建出来的 pod 都是随机分配到不同的 节点上的, 那么,我们需要实现如上的需求,我们可以通过 标签来完成 给 node

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

    K8s服务编排

    前置说明: k8s_host=192.168.214.50 //定义k8s_host变量,此ip为k8s管理机 yaml_host=192.168.214.100:9999 //相关服务的配置存放机 step1.登录100 jenkins 的机器 【有初始化的相关脚本的机器,且与k8s机器互相免密访问】 step2.初始化项目的信息 进入到/opt/scripts -->#sh init-yaml.sh /bin/bash ns=$1  //命名空间 app=$2 //对应的服务名称 yaml=/opt/scripts/yaml  //定义一个目录变更 mkdir -p $yaml/$ns/$app/properties /bin/bash ns=$1 //命名空间 app=$2 //对应的服务名称 kubectl='kubectl --kubeconfig=/etc/kubernetes/kubelet.kubeconfig 的管理机上,为服务生成service服务代理 ''' k8s分配给Service一个固定IP,这是一个虚拟IP(也称为ClusterIP),并不是一个真实存在的IP,而是由k8s虚拟出来的。

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

    k8s】service服务和job服务

    创建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 ,wget命令通过域名访问服务 实训任务 创建deployment1 要求: 2 副本,镜像类型 httpd 创建deployment2 要求: 3副本,镜像类型 httpd 创建 service1 ,service1 后端为 deployment1 和 deployment2 中所有 pod。 创建 service2,service2 后端为 deployment1 中的第一个 pod 和 deployment2 中的第一个pod 为dy的第一个pod和dy2的第一个pod打上标签tz=httpd01

    62020编辑于 2023-06-10
  • 来自专栏golang云原生new

    k8s 自身原理 2

    我们也没有去刻意指定 pod 要调度到哪个节点,但是最终 pod 一定会被调度到集群中的某一个节点 实际上,这就是调度器在起作用了,没错,调度器就是调度 pod 资源到对应的节点上 咱们的调度器也是利用了 API 服务器的监听机制来新创建 总有一个优先级吧 是的没错,总会有一定的规则,咱们画个图来感受一下: 例如一开始集群中有 4 个节点,在运行过程中,节点 2 和 节点 3 变为不可用了,接下来,若有新的 pod 需要调度,那么调度器会从可用的 2 个节点里面选择一个最优的节点, 例如磁盘,内存空间较大,或者 pod 资源个数较少的,会按照综合优先级递减排序, 例如就会生成 pod 调度到节点 4 那么问题就来了,k8s 是如何找到满足需求的可用节点呢 pod 模板中设置 pod 的亲缘性 和 非亲缘性来设置定,pod 调度到哪些符合要求的节点上去 总的来说,pod 分散到不同的节点可以降低风险,增强健壮性,若其中一个节点挂掉,并不会应 pod 提供的服务 之前说到 etcd ,ApiServer 都可以是多个的,那么这里的调度器仍然可以是多个,若是真的只有一个调度器,服务多了之后他也扛不住嘞 我们也可以看到 kube-system 命名空间中 这些核心组件都是以

    36720编辑于 2023-09-01
  • 来自专栏云原生系列

    k8s系列(2)-Service

    完整系列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 Loadbalancer 也可以对外提供服务,这需要一个负载均衡器的支持,因为它需要生成一个新的 IP 对外服务,否则状态就一直是 pendding,这个很少用了,后面我们会讲更高端的 Ingress 找到了service,service做负载均衡图片LoadBalancer需要负载均衡器(通常都需要云服务商提供,裸机可以安装 METALLB 测试)会额外生成一个 IP 对外服务K8S 支持的负载均衡器 LoadBalancer做流量入口的负载均衡,service做调度服务的负载均衡Headless适合数据库clusterIp 设置为 None 就变成 Headless 了,不会再分配 IP参考文档服务

    62631编辑于 2022-10-21
  • 来自专栏容器云实践

    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 之中。 注册过程大致如下: 1.Service创建的时候会向 API Server 用 POST 方式提交一个新的 Service 定义; 这个请求需要经过认证、鉴权以及其它的准入策略检查过程之后才会放行; 2. 备注: Kubernetes 使用 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 ,可以在不修改现有应用程序的情况下,使用服务发现机制访问到该应用; 基于Pod、Deployment、Service三个组件的协作,同一个应用的部署脚本可以在开发、测试、生产不同环境中复用; 2、基础语法

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

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

    2)通过kubectl expose命令来创建service 为了让客户端应用能够访问到两个sprintbootPod 实例,需要创建一个Service来提供服务 k8s提供了一种快速的方法,即通过 四、服务发现和DNS Kubernetes 支持2种基本的服务发现模式 —— 环境变量和 DNS。 2、DNS 一个可选(尽管强烈推荐)集群插件 是 DNS 服务器。 八、集群的服务分类 在K8S运行的服务,从简单到复杂可以分成三类:无状态服务、普通有状态服务和有状态集群服务。下面分别来看K8S是如何运行这三类服务的。 2、和普通Service相比:k8s对Headless Service并不会分配Cluster IP,kube-proxy不会处理它们,而且平台也不会为它们进行负载均衡和路由。

    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服务的    1/1     Running   0              2m20s nginx-7cbb8cd5d8-w9tn2           1/1     Running   3 (140m  在上面的教程中可以看到,我们先将镜像放到了docker hub,才开始进行k8s部署,这样相当于把自己的项目放到了公共的仓库,十分不安全 原因是: k8s有多个节点,如果我们只在一个节点编译镜像,其他节点就无法获取到这个自己编译后的镜像 解决方案有2种: 1:将所有镜像都编译到其他节点中去 2:创建一个私有的docker仓库,让k8s集群通过私有仓库去进行pull images 即可 本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客

    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的服务 [root@master 0607tz]# vim gosvc.yaml kind: Service apiVersion: v1 metadata: name: k8s-demo-svc name: api     port: 8080     protocol: TCP     targetPort: 8080 selector:   app: k8s-demo k8s

    53540编辑于 2023-06-10
  • 服务实践k8s与dapr开发部署实验(2)状态管理

    访问http://localhost:5002/swagger/index.html

    23310编辑于 2024-05-29
  • 来自专栏k-cloud-labs

    k8s watch 丢事件 - 2

    目前基本已经知道问题原因,但尚未完全修复,也就是说如果你在使用 v1.27 或者更新的 K8s 版本,就有可能会遇到这个问题,但也并不是说使用低版本的 K8s 不会遇到这个问题,只是概率不同而已,另外也和具体的使用方式有关 这次的问题主要是在 Etcd,当然 K8s 侧也有一点小问题。本篇重点介绍 K8s 侧的相关逻辑,后续再详细介绍 Etcd 的相关逻辑问题。 with: %v", r.name, r.expectedTypeName, err) case apierrors.IsTooManyRequests(err): klog.V(2) r.initConnBackoffManager.Backoff().C() continue case apierrors.IsInternalError(err) && retry.ShouldRetry(): klog.V(2) 上文分析的 K8s 侧的兜底逻辑目前仍然是失效状态,也就是说后续如果 Etcd 侧出现其他原因导致的 PrevKV=nil 的 event,那么 k8s 还是会出现丢事件的问题。

    62810编辑于 2024-03-10
  • 来自专栏日常笔记

    Spring cloud k8s 服务发现

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

    77450发布于 2020-06-02
  • 来自专栏小陈运维

    k8s的无头服务

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

    37010编辑于 2024-11-17
  • 来自专栏运维小路

    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 节点上, 1、亲和性类型 亲和性调度包括 2 种类型: 节点亲和性(Node Affinity):基于 Node 节点的标签调度 Pod Pod 亲和性(Pod Affinity):基于同一命名空间下指定 Pod 的标签调度 Pod 2、亲和性规则 亲和性调度的规则包括 2 种类型: RequiredDuringSchedulingIgnoredDuringExecution:Pod 在调度时必须满足指定条件, 1、反亲和性类型 Pod 反亲和性(Pod Anti-Affinity):基于同一命名空间下指定 Pod 的标签调度 Pod 2、反亲和性规则 反亲和性调度的规则包括 2 种类型: RequiredDuringSchedulingIgnoredDuringExecution label node <node-name> key=value --overwrite # 查看节点标签 kubectl get node <node-name> --show-labels 2

    63710编辑于 2024-09-02
领券