0%

简介

在裸金属上(这里是相对云上环境来说,不是说无操作系统)部署的Kubernetes集群,是无法使用LoadBalancer类型的Service的,因为Kubernetes本身没有提供针对裸金属集群的负载均衡器。Kubernetes仅仅提供了针对部分IaaS平台(GCP, AWS, Azure……)的胶水代码,以使用这些平台的负载均衡器。

为了从外部访问集群,对于裸金属集群,只能使用NodePort服务或Ingress。前者的缺点是每个暴露的服务需要占用所有节点的某个端口,后者的缺点是仅仅能支持HTTP协议。

阅读全文 »

envoy 默认提供了管理接口, Istio 默认监听的 localhost:15000 端口

这个端口暴露了如下接口用来获取程序运行信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/: HTML 格式的管理链接汇总
/certs: 列出所有已加载的TLS证书,包括文件名,序列号,主题备用名称以及符合证书原型定义的 JSON格式到期的天数。
/clusters: 列出所有已配置的集群管理器集群。此信息包括每个群集中发现的所有上游主机以及每个主机统计信息。这对于调试服务发现问题很有用。
/config_dump: 将当前Envoy从各种组件加载出来的的配置转储为JSON进行输出。
/contention: 如果启用了互斥跟踪,则以 JSON格式输出当前的Envoy互斥争用统计信息(MutexStats)
/cpuprofiler: 启用或禁用CPU Profiler。需要使用gperftools进行编译。输出文件可以由admin.profile_path配置。
/healthcheck/fail: cause the server to fail health checks
/healthcheck/ok: cause the server to pass health checks
/help: print out list of admin commands
/hot_restart_version: print the hot restart compatibility version
/listeners: print listener addresses
/logging: query/change logging levels
/memory: print current allocation/heap usage
/quitquitquit: 退出服务器
/reset_counters: reset all counters to zero
/runtime: print runtime values
/runtime_modify: modify runtime values
/server_info: print server version/status information
/stats: print server stats
/stats/prometheus: print server stats in prometheus format
阅读全文 »

测试环境中发现, 当 pod 调度到指定 node 后, pod 内部无法解析 dns, 但可以通过ip直接ping 通. 通过ip访问一切正常.

尝试使用nslookup 解析返回结果 NODATA.

后面发现 kubernetes 默认会给 /etc/resolv.conf 文件新增 4 个搜索域

阅读全文 »

kubernetes 使用 crio 私有仓库证书校验失败解决方案:

  1. 编辑 /etc/crio/crio.conf 将仓库地址添加到 insecure_registries 字段
  2. 将证书添加到信任列表 centos 在这个 /etc/pki/ca-trust/source/anchors/ 目录,然后执行 update-ca-trust

kubernetes 使用私有需要授权的仓库时,需要先创建授权配置文件

阅读全文 »

问题原因

golang 程序 panic,或者通过 runtime.Caller(0) 获取当前出错的文件位置作为日志记录时,会暴露程序编译机器上的项目路径、以及账户,不如下面这些信息, 这些信息我们并不想让对方看到。

1
2
3
4
panic: oh! no!
goroutine 1 [running]:
main.main()
/Users/jerry/go/src/demo/panic_demo/main.go:10 +0x64
阅读全文 »

为什么需要文件预读机制?

算法磁盘I/O性能的发展远远滞后于CPU和内存,因而成为现代计算机系统的一个主要瓶颈。预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。

从寄存器、L1/L2高速缓存、内存、闪存,到磁盘/光盘/磁带/存储网络,计算机的各级存储器硬件组成了一个金字塔结构。越是底层存储容量越大。然而访问速度也越慢,具体表现为更小的带宽和更大的延迟。因而这很自然的便成为一个金字塔形的逐层缓存结构。由此产生了三类基本的缓存管理和优化问题:

阅读全文 »

为什么要有 Secret ?

使用过 Kubernetes 的人应该都知道, Kubernetes 对动态配置管理提供了两种管理方式, 一种是 ConfigMap 一种就是现在要讲的 Secret.

这是因为我们在 kubernetes 上部署应用的时候,经常会需要传一些动态配置给应用使用,比如数据库地址,用户名, 密码之类的信息。如果没有上面提供的方法, 我们只能使用下面几种方法.

阅读全文 »

基本概念

Prometheus 所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB):属于同一指标名称,同一标签集合的、有时间戳标记的数据流。除了存储的时间序列,Prometheus 还可以根据查询请求产生临时的、衍生的时间序列作为返回结果。

样本在时间序列中的每一个点称为一个样本(sample),样本由以下三部分组成:

阅读全文 »