
kubernetes
文章平均质量分 92
kunyus
这个作者很懒,什么都没留下…
展开
-
kubernetes 源码解析,kubelet pod 变更事件处理逻辑整理
代码划分由于 kubelet 代码还是比较复杂的,下面是我整理的自己对kubelet的代码功能划分,可以先通过下面的描述在脑海里构造一个大致的框架,这样看到具体代码逻辑大致能知道属于哪一部分负责什么逻辑,理解会轻松一些。根据整理代码,目前我将kubelet和POD相关的代码划分为3大部分。事件源 - POD变更事件产生抽象层 - 一些中间逻辑抽象,以及对很多特性的支持执行层 - 负责POD真正的创建,修改,删除关键路径下面这张图不是完整的调用层级,因为完整的调用层级比较深,所以对于不太重原创 2021-01-04 19:12:15 · 640 阅读 · 0 评论 -
kubelet 指标监控,/metrics 接口暴露出来的指标列表和说明,
现状这段时间在研究 kubernetes 的性能测试,需要观察当前 kubernetes 的各种运行指标,但是苦于英语渣,百度又找不到别人的分享,或者搜索词不对。目标没有办法,硬着头皮使用 Goole 翻译加上看代码对 kubelet 的指标内容进行了翻译,所以整理一下,希望可以帮到有需要的人。结果// 审计事件生成并发送到审计后端的数量# HELP apiserver_audit_event_total [ALPHA] Counter of audit events generated and原创 2020-12-30 11:16:11 · 3956 阅读 · 1 评论 -
1条命令解决使用kubeadm安装 kubernetes 从 k8s.gcr.io 拉取镜像失败的问题
原因由于 kubernetes 安装时需要从 k8s.gcr.io 拉取镜像,但是该网站被我国屏蔽了,国内没法正常访问导致没法正常进行kubernetes正常安装。这里通过介绍从Docker官方默认镜像平台拉取镜像并重新打tag的方式来绕过对 k8s.gcr.io 的访问。解决方案通过执行 kubeadm config images list 获取到需要拉取的镜像列表,并通过 sed 格式...原创 2020-03-23 11:03:13 · 2666 阅读 · 1 评论 -
envoy 查看当前使用的配置信息, 包含动态下发的配置
envoy 默认提供了管理接口, Istio 默认监听的 localhost:15000 端口这个端口暴露了如下接口用来获取程序运行信息: /: HTML 格式的管理链接汇总 /certs: 列出所有已加载的TLS证书,包括文件名,序列号,主题备用名称以及符合证书原型定义的 JSON格式到期的天数。 /clusters: 列出所有已配置的集群管理器集群。此信息包括每个群集中发现的所有...原创 2019-03-22 12:35:31 · 3646 阅读 · 3 评论 -
Istio 独立 istio-ingressgateway 部署文件,可以部署到其他命名空间以及用来部署多个 ingressgateway
istio 中 Gateway 如何选择 ingressgateway 呢?实际上 Gateway 和 Service 的 selector 字段作用原理一样, 通过 Deployment 中 template 的 labels 来进行筛选.现在有一个部署和服务的定义如下:apiVersion: v1kind: Servicemetadata: name: istio-ingre...原创 2019-04-04 20:37:16 · 6780 阅读 · 0 评论 -
记一次 kubernetes 部署的业务访问量大时出现访问超时
问题表现当访问并发量比较大时, 请求会频繁超时.问题原因由于程序内部实现中会频繁访问日志服务器, 但当时 日志服务器没有部署到 kubernetes 中,所以使用 CoreDNS hosts 插件进行自定义域名解析来实现.出问题时, CoreDNS CPU 一直在 10-30% 之间波动.由于CPU并没有跑满, 怀疑此处有问题但并没有将此处当做本次的瓶颈.排查完其他问题后最后才排查此处问题...原创 2019-04-04 21:09:00 · 1650 阅读 · 0 评论 -
kuernetes 修改pod时区的方法
问题描述在安装Kubernetes集群的过程中并没有注意到pod的时间问题,直到在Tomcat上部署应用后发现pod中的时间与Node上的时间不同步,解决这个问题基本上可以有两种思路:直接修改镜像的时间设置,好处是应用部署时无需做特殊设置,但是需要手动构建Docker镜像。部署应用时,单独读取主机的“/etc/localtime”文件,即创建pod时同步时区,无需修改镜像,但是每个应...原创 2019-03-27 11:47:14 · 2179 阅读 · 0 评论 -
kubernetes coredns 添加自定义DNS解析记录
coredns 自带 hosts 插件, 允许像配置 hosts 一样配置自定义 DNS 解析,修改 kube-system 中 configMap 的 coredns 添加如下设置即可。 hosts { 172.21.91.28 cache.redis 172.21.91.28 persistent.redis fal...原创 2019-03-27 11:54:39 · 16203 阅读 · 0 评论 -
kubernetes 以单个文件的方式挂载 configMap 及挂载注意事项
问题现象默认挂载 configMap 时,kubernetes 会覆盖掉挂载的整个目录,哪怕使用 items 也会导致整个目录被覆盖,那么如何实现挂在单个文件而不覆盖整个目录呢。下面说一下 kubernetes 中如何挂载单个文件而不是整个目录。解决方案使用 subPath实际上 kubernets 本身提供了 volumeMounts.subPath 属性用于挂在单个文件而不是整个目录。...原创 2019-03-31 21:21:30 · 10425 阅读 · 0 评论 -
Istio 遇到的问题汇总
ServiceEntry 解析错误问题表现创建 ServiceEntryapiVersion: networking.istio.io/v1alpha3kind: ServiceEntrymetadata: name: gitlab-huoysspec: hosts: - gitlab-huoys location: MESH_INTERNAL ports: -...原创 2019-03-27 20:32:21 · 3776 阅读 · 0 评论 -
Gitlab-CI 结合 kubernetes 编译部署 .gitlab-ci.yml 文件示例
# This file is a template, and might need editing before it works on your project.image: git.huoys.com:9999/docker-image/golangvariables: CI_REPOSITORY_NAME: git.huoys.com/${CI_PROJECT_PATH} ...原创 2019-05-29 14:31:27 · 954 阅读 · 0 评论 -
kubernetes 中 Secret 的作用, 以及为什么说它是安全的
为什么要有 Secret ?使用过 Kubernetes 的人应该都知道, Kubernetes 对动态配置管理提供了两种管理方式, 一种是 ConfigMap 一种就是现在要讲的 Secret.这是因为我们在 kubernetes 上部署应用的时候,经常会需要传一些动态配置给应用使用,比如数据库地址,用户名, 密码之类的信息。如果没有上面提供的方法, 我们只能使用下面几种方法.直接打包到...原创 2019-07-01 18:14:16 · 4142 阅读 · 5 评论 -
kubernetes 安装 flannel 提示 pod cidr not assgned 解决方案
问题现象使用 kubeadm 安装的 kubernetes 集群, 再添加多个的 master 时, flannel 无法启动, 日志出现错误提示 pod cidr not assgned问题原因kube-controller-manager 没有给新加入的节点分配IP段.解决方案方案1编辑 master 机器上的 /etc/kubernetes/manifests/kube-cont...原创 2019-06-26 14:43:46 · 3113 阅读 · 0 评论 -
官方 kubernetes 部署 openshift web管理界面
apiVersion: v1kind: Namespacemetadata: name: openshift-console ---apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: webconsole-new namespace: openshift-console labels: ...原创 2019-06-23 17:18:20 · 2112 阅读 · 1 评论 -
Istio 服务无法访问外网,开放外网权限
Istio 对于外网转发可以通过配置文件来修改, 对应的就是名称为 istio-sidecar-injector 的 configMap找到下面这一行 - "[[ annotation .ObjectMeta `traffic.sidecar.istio.io/includeOutboundIPRanges` "*" ]]"将其修改为 - "[[ anno...原创 2019-03-22 12:22:26 · 2083 阅读 · 1 评论 -
Kubernetes 部署文件: prometheus + grafana + kube-state-metrics + node-exporter
Prometheuskind: ConfigMapapiVersion: v1metadata: name: prometheus-server-conf namespace: monitor labels: name: prometheus-server-confdata: prometheus.yml: |- global: scrape_i...原创 2019-03-18 17:13:56 · 2521 阅读 · 0 评论 -
Istio 部署保留监控的情况下最小化安装使用的Helm配置文件
不支持自动注入 sidecar, 需要手动通过命令行注入sidecar# This is used to generate minimal demo mode. It is included from demo and demo-auth values.# It is shipped with the release, used for bookinfo or quick installati...原创 2019-03-21 18:20:51 · 378 阅读 · 0 评论 -
Kubernetes 安装命令, 运行库使用: CRI-O(runc)
set hostnamehostnamectl set-hostname nie-masterInstall prerequisitescat < /etc/yum.repos.d/paas7-crio.repo[paas7-crio]name=CRI-Obaseurl=https://cbs.centos.org/repos/paas7-crio-311-candidate/x...原创 2018-12-22 17:15:49 · 3508 阅读 · 0 评论 -
Dockerfile for scrapyd
Dockerfile for scrapydFROM alpine:latestRUN set -xe && apk update && apk add --no-cache python3 python3-dev && wget -O - https://bootstrap.pypa.io/get-pip.py | python3 &...原创 2018-12-29 20:48:57 · 306 阅读 · 0 评论 -
kubernetes 部署文件 - gitlab
kind: DeploymentapiVersion: apps/v1metadata: labels: k8s-app: gitlab name: gitlabspec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: k8s-app: gitlab template...原创 2019-02-18 11:11:04 · 702 阅读 · 0 评论 -
kubernetes 部署 metrics-server,提示 no metrics known for pod 解决方案及详细原因分析
给部署添加如下命令行即可: args: - '--kubelet-preferred-address-types=InternalIP' - '--kubelet-insecure-tls'原创 2019-02-28 20:50:58 · 7166 阅读 · 9 评论 -
openss CA签署带扩展字段的证书
生成签署请求openssl req -new -key ../ca.key -out metrics-server.csr -reqexts SAN -extensions SAN -subj "/C=CN/ST=Guang'dong/L=Sheng'zhen/O=Kubernetes/OU=dev/CN=metrics-server.k8s.com" -config <(cat /etc...原创 2019-02-21 12:26:54 · 1158 阅读 · 0 评论 -
k8s 使用私有仓库出现证书校验失败及403未授权解决方案
kubernetes 使用 crio 私有仓库证书校验失败解决方案:编辑 /etc/crio/crio.conf 将仓库地址添加到 insecure_registries 字段将正式添加到信任列表 centos 在这个 /etc/pki/ca-trust/source/anchors/ 目录,然后执行 update-ca-trustkubernetes 使用私有需要授权的仓库时,需要先创...原创 2019-02-27 13:36:58 · 1769 阅读 · 0 评论 -
etcd 强制重新引导
etcd 启动时添加如下标识即可- --force-new-cluster原创 2019-03-13 23:10:34 · 1224 阅读 · 0 评论 -
etcd 集群添加新节点
如果是原有节点, 有原有数据的需要先删除原有数据, 保证是新节点加入在现有集群执行 kubectl member add <name> <peer-url>启动新节点, 注意新节点必须指定 --initial-cluster-state--initial-cluster-state=existing如果在启动新节点之前没有在现有集群中执行 member add...原创 2019-03-14 11:34:15 · 3723 阅读 · 0 评论 -
Kubernetes 将Pod调度到Master节点
出于安全考虑,默认配置下Kubernetes不会将Pod调度到Master节点。如果希望将k8s-master也当作Node使用,可以执行如下命令:kubectl taint node k8s-master node-role.kubernetes.io/master-其中k8s-master是主机节点hostname如果要恢复Master Only状态,执行如下命令:kubectl ta...转载 2019-03-14 15:28:52 · 2256 阅读 · 0 评论 -
kuberntes 无法解析dns问题分析及解决
测试环境中发现, 当 pod 调度到指定 node 后, pod 内部无法解析 dns, 但可以通过ip直接ping 通. 通过ip访问一切正常.尝试使用nslookup 解析返回结果 NODATA.后面发现 kubernetes 默认会给 /etc/resolv.conf 文件新增 4 个搜索域search huoys.svc.cluster.local svc.cluster.local...原创 2019-03-16 13:12:52 · 2311 阅读 · 0 评论 -
利用 Squash 对微服务中的 golang 程序进行远程调试
1. 简介Squash是为微服务架构专门设计的调试工具,支持远程单步跟踪。微服务架构下,应用程序的调试是困难的,其状态跨越多个微服务传播,你很难得到应用程序的整体状态。Tracing可以协助开发人员了解事务的整体流程、Istio等服务网格可以监控网络,定位延迟为她。但是,直接在运行时干预应用程序执行的工具一直缺失。传统单体应用的调试器能够为开发人员提供巨大帮助,调试器包括的功能如断点、修改变...原创 2019-03-17 11:42:41 · 1022 阅读 · 0 评论 -
为 kubernetes 集群提供外网IP自动分配及负载均衡
简介在裸金属上(这里是相对云上环境来说,不是说无操作系统)部署的Kubernetes集群,是无法使用LoadBalancer类型的Service的,因为Kubernetes本身没有提供针对裸金属集群的负载均衡器。Kubernetes仅仅提供了针对部分IaaS平台(GCP, AWS, Azure……)的胶水代码,以使用这些平台的负载均衡器。为了从外部访问集群,对于裸金属集群,只能使用NodePo...原创 2019-03-17 11:53:13 · 4360 阅读 · 0 评论 -
kubenetes 安装 helm
Install HELMrun install scriptswget -q -O - https://raw.githubusercontent.com/helm/helm/master/scripts/get | bashcreate helm ServiceAccountkubectl create serviceaccount --namespace kube-system til...原创 2018-12-26 19:46:27 · 197 阅读 · 0 评论