Kubernetes
qhh0205
专注于云计算、Dockers、Kubernetes、DevOps、持续集成/持续交付相关技术,企业级 DevOps 落地实践!
展开
-
使用 kind 1 分钟启动一个本地 k8s 开发集群
使用 kind 1 分钟启动一个本地 k8s 开发集群kind 简介Github 地址:https://github.com/kubernetes-sigs/kindkind 是一个快速启动 kubernetes 集群的工具,适合本地 k8s 开发环境搭建,能在 1 分钟之内就启动一个非常轻量级的 k8s 集群。之所以如此之快,得益于其基于其把整个 k8s 集群用到的组件都封装在了 Docker 容器里,构建一个 k8s 集群就是启动一个 Docker 容器,如此简单,正如下面图片描述一样:说说我原创 2020-08-15 12:37:36 · 2652 阅读 · 0 评论 -
通过 swagger-ui 查看 kube-apiserver apis
通过 swagger-ui 查看 kube-apiserver apis从 k8s v1.14 开始,官方已经废弃了 swagger 接口,使用 openapi 规范,暴露出来的接口是: /openapi/v2,我们要想通过swagger-ui 来查看 apiserver 接口,可以自己本地跑个 swagger-ui 服务,然后访问 kube-apiserver 地址的 openapi 接口地址即可,swagger-ui 来源支持 openapi 数据格式。1.本地启动 swagger-ui 服务d原创 2020-07-11 17:48:35 · 1886 阅读 · 1 评论 -
kubernetes 源码编译
kubernetes 源码编译分为本地编译和镜像编译,本地编译是指最终编译出来的是二进制可执行文件,镜像编译是最终编译出来的产出物为 docker 镜像 tar 包。本文主要介绍本地编译的方法,以编译 kube-apiserver 组件为例说明。环境要求Go 环境: go1.12.xxgcc我的环境说明:Mac Os + go1.12.10 + gcc,如果读者本地的 Go 版本不...原创 2020-03-01 18:14:29 · 1743 阅读 · 0 评论 -
使用 Prometheus Operator 构建 Kubernetes 监控系统
本文主要介绍使用 Prometheus 监控 Kubernetes 的最佳实践,借助 Prometheus Operator 和 Helm 快速完成 Kubernetes 集群的监控。Prometheus Operator 是 SRE 的一种实践,一种新的软件类型,大大简化了在 Kubernetes 上部署、管理和运行 Prometheus 和 Alertmanager 集群,同时还保持 Kub...原创 2019-12-15 13:59:28 · 917 阅读 · 0 评论 -
Kubernetes 集群安全机制详解
本文主要介绍 Kubernetes 的安全机制,如何使用一系列概念、技术点、机制确保集群的访问是安全的,涉及到的关键词有:api-server,认证,授权,准入控制,RBAC,Service Account,客户端证书认证,Kubernetes 用户,Token 认证等等。虽然涉及到的技术点比较琐碎,比较多,但是了解整个机制后就很容易将其串起来,从而能很好地理解 Kubernetes 集群安全机制...原创 2019-08-22 13:25:38 · 3364 阅读 · 0 评论 -
从 Docker 到 Kubernetes 日志管理机制详解
在容器化时代,容器应用的日志管理和传统应用存在很大的区别,为了顺应容器化应用,Docker 和 Kubernetes 提供了一套完美的日志解决方案。本文从 Docker 到 Kubernetes 逐步介绍在容器化时代日志的管理机制,以及在 Kubernetes 平台下有哪些最佳的日志收集方案。涉及到的话题有 Docker 日志管理机制、Kubernetes 日志管理机制、Kubernetes 集群...原创 2019-08-26 10:30:27 · 2802 阅读 · 0 评论 -
Kubernetes CronJob 的一个应用案例
最近 Kubernetes 集群中出现过几次 Redis 故障,具体表现是每次集群重启(云资源按需启动), Redis Pod 都要老半天才能启动起来,后来逐渐排查定位才发现原来是由于 Redis 开启了 aof 持久化机制。我们知道在 AOF 持久化机制下,Resdis 的每一条写命令都会被同步、并且追加的方式持久化的磁盘文件,当 Redis 由于意外故障时,下次重启就会原封不动地执行 AOF...原创 2019-08-30 11:31:10 · 991 阅读 · 1 评论 -
Kubernetes 基于 EFK 技术栈的日志收集实践
之前写过一篇文章介绍了容器环境下日志管理的原理机制:从 Docker 到 Kubernetes 日志管理机制详解,文章内容偏理论,本文在该理论的支撑下具体实践 Kubernetes 下基于 EFK 技术栈的日志收集,本文偏实践,要想全面了解 Kubernetes 下日志收集管理机制,最好还是两篇文章顺序阅读。本文不仅限于介绍怎么在 Kubernetes 集群部署 EFK 组件,还涉及到其他相关话...原创 2019-09-06 00:23:10 · 4850 阅读 · 1 评论 -
基于 Kubernetes 的 7 大 DevOps 关键实践
本文主要介绍 DevOps 的 7 大关键实践在 Kubernetes 平台下如何落地,结合我们目前基于 Kubernetes 平台的 DevOps 实践谈谈是如何贯彻相关理念的,这里不会对其具体实现细节进行深入讲解,只做一个大致的概括的描述,分享下已有的实践,具体实践细节有时间了会单独整理一篇文章分享。DevOps 简介DevOps 集文化理念、实践和工具于一身,可以提高企业高速交付应用程序...原创 2019-09-07 21:03:50 · 1281 阅读 · 0 评论 -
使用 Kubernetes Ingress 对外暴露服务
本文主要介绍如何通过 Kubernetes Ingress 资源对象实现从外部对 k8s 集群中服务的访问,介绍了 k8s 对外暴露服务的多种方法、Ingress 及 Ingress Controller 的概念。涉及到的话题有:k8s 对外暴露服务的方法;Ingress 及 Ingress Controller 简介;helm 裸机部署 Nginx Ingress Controller;...原创 2019-08-12 23:27:22 · 18240 阅读 · 4 评论 -
Kubernetes 调整 nodePort 端口范围
默认情况下,k8s 集群 nodePort 分配的端口范围为:30000-32767,如果我们指定的端口不在这个范围就会报类似下面这样的错误:Error: release kong failed: Service “kong-kong-admin” is invalid: spec.ports[0].nodePort: Invalid value: 8444: provided port is...原创 2019-08-15 21:19:15 · 12032 阅读 · 0 评论 -
使用 kubeadm 搭建 kubernetes 集群
使用 kubeadm 搭建 kubernetes 集群kubeadm 简介kubeadm 是 k8s 官方提供的用于快速部署 k8s 集群的命令行工具,也是官方推荐的最小化部署 k8s 集群的最佳实践,比起直接用二进制部署能省去很多工作,因为该方式部署的集群的各个组件以 docker 容器的方式启动,而各个容器的启动都是通过该工具配自动化启动起来的。kubeadm 不仅仅能部署 k8s 集群...原创 2019-03-19 22:48:47 · 3678 阅读 · 0 评论 -
Helm 安装使用
其实 Helm 的安装很简单,之所以单独写这篇文章主要是因为国内网络原因导致 helm 使用存在障碍(防火墙对 google 不友好),本文重点说如何解决这一问题。helm 安装官方提供了一件安装脚本,安装最新版:https://helm.sh/docs/using_helm/#installing-helmcurl -L https://git.io/get_helm.sh | bash...原创 2019-08-08 10:59:12 · 867 阅读 · 1 评论 -
helm 部署 heapster 组件
之前工作用的 k8s 集群(GKE)都是支持 kubectl top node 查看节点资源使用情况的,最近自己本地新搭的集群发现用不了该命令。网上搜索了下发现是由于缺少集群指标收集组件导致,目前常用的集群指标收集组件是 heapster 和 metrics-server,看官方介绍 heapster 要逐渐被淘汰了,更推荐 metrics-server。但是为了适配后续要安装的 kubernet...原创 2019-08-08 12:40:47 · 980 阅读 · 0 评论 -
helm 部署 kubernetes-dashboard
helm 部署 kubernetes-dashboardkubernetes-dashboard 是 k8s 官方提供的集群 Web UI,可以查看集群详细的信息,比如集群的 api 资源,pod 日志,工作负载,节点资源利用率等等。使用官方提供的 Chart:https://github.com/helm/charts/tree/master/stable/kubernetes-dashb...原创 2019-08-08 12:51:26 · 3186 阅读 · 0 评论 -
kubeadm + vagrant 部署多节点 k8s 的一个坑
kubeadm + vagrant 部署多节点 k8s 的一个坑之前写过一篇「使用 kubeadm 搭建 kubernetes 集群」教程,教程里面使用 Vagrant 启动 3 个节点,1 个 master,2 个 node 节点,后来使用过程中才慢慢发现还是存在问题的。具体问题表现是:kubectl get node -o wide 查看到节点 IP 都是:10.0.2.15;[ro...原创 2019-08-06 09:41:32 · 1598 阅读 · 1 评论 -
Vagrant 多网卡环境下 flannel 网络插件导致 DNS 无法解析
之前写过一篇 k8s 集群自动化部署的文章:「Kubeadm 结合 Vagrant 自动化部署最新版 Kubernetes 集群」,发现集群启动后 DNS 无法解析,公网和集群内部都无法解析,具体问题表现是:进入 pod 执行 ping service 名称或者公网域名都是无法解析 Unknow host。经过网上搜索一番找到了问题并得以解决,主要原因是 Vagrant 在多主机模式下有多个网卡...原创 2019-08-08 16:16:29 · 1297 阅读 · 0 评论 -
Kubeadm 结合 Vagrant 自动化部署最新版 Kubernetes 集群
之前写过一篇搭建 k8s 集群的教程:「使用 kubeadm 搭建 kubernetes 集群」,教程中用到了 kubeadm 和 vagrant,但是整个过程还是手动一步一步完成:创建节点--> 节点配置、相关软件安装 --> 初始化 master 节点 --> node 节点加入 master 节点。其实这个过程完全可以通过 Vagrant 的配置器自动化来实现,达到的目的是...原创 2019-08-06 14:43:49 · 656 阅读 · 0 评论 -
kubectl 多集群访问配置
配置 KUBECONFIG 环境变量,是 kubectl 工具支持的变量,变量内容是冒号分隔的 kubernetes config 认证文件路径。假如我们有两个集群:A 和 B,A 集群的 config 文件为:$HOME/.kube/config,B 集群的 config 文件为:$HOME/.kube/config-local。要配置 kubectl 随时在两个集群间切换,只需要设置 KUBE...原创 2019-08-09 10:23:41 · 2310 阅读 · 0 评论 -
kubeadm 安装的 k8s 集群 delete node 后重新添加回集群问题解决
kubeadm 安装的 k8s 集群 delete node 后重新添加回集群问题解决问题描述前不久公司同事误操作,直接 kubectl delete node node_ip 从集群中删除了一个 node,后来未知原因服务器给宕机了,重启服务器后 docker、kubelet 等服务器都自动重启了(用 systemd 管理),但是 node 一直是 Not Ready 状态,按理来说执行...原创 2018-09-11 14:07:32 · 14278 阅读 · 1 评论