Event

kubernetes源码分析之kube-scheduler - 从代码看原理

kubernetes集群三步安装

kube-scheduler源码分析

关于源码编译

我嫌弃官方提供的编译脚本太麻烦,所以用了更简单粗暴的方式编译k8s代码,当然官方脚本在编译所有项目或者夸平台编译以及realse时还是挺有用的。

在容器中编译:

docker run -v /work/src/k8s.io/kubernetes:/go/src/k8s.io/kubernetes golang:1.11.2 bash

在容器中可以保证环境干净

进入bash后直接进入kube-scheduler的主目录编译即可

Continue reading

构建生产环境可用的高可用kubernetes集群

kubernetes集群三步安装

k8s 1.14以上版本请直接参考sealos readme

sealos是一个轻量级kubernetes HA安装项目,重点关注功能的收敛而非庞大复杂厚重,旨在容易定制。除kubelet意外其它任何组件均在容器中运行 这样做的好处有几点:

  1. 保证一致性,这样避免掉很多因宿主环境问题导致的安装失败,如keepalived版本问题,系统库问题等等
  2. 统一管理统一监控,这样我们就不需要为如keepalived etcd haproxy单独配置进程级别的监控,仅要监控pod即可,kubelet也会对这些容器做比较好的管理,如自动拉起等

Continue reading

基于drone构建CI/CD系统,对接k8s

kubernetes集群三步安装

CI 概述

用一个可描述的配置定义整个工作流

程序员是很懒的动物,所以想各种办法解决重复劳动的问题,如果你的工作流中还在重复一些事,那么可能就得想想如何优化了

持续集成就是可以帮助我们解决重复的代码构建,自动化测试,发布等重复劳动,通过简单一个提交代码的动作,解决接下来要做的很多事。

容器技术使这一切变得更完美。

Continue reading

etcd管理指南

广告 | kubernetes各版本离线安装包

etcd 证书配置

生产环境中给etcd配置证书相当重要,如果没有证书,那么k8s集群很容易被黑客利用而去挖矿什么的。做法非常简单,比如你下了一个不安全的镜像,通过程序扫描到etcd的ip和端口,那么黑客就可以绕开apiserver的认证直接写数据,写一些deployment pod等等,apiserver就会读到这些,从而去部署黑客的程序。 我们就有一个集群这样被利用去挖矿了,安全无小事,如果黑客恶意攻击也可轻松删除你的所有数据,所以证书与定期备份都很重要,即便有多个etcd节点,本文深入探讨etcd管理的重要的几个东西。

Continue reading

kubernetes dashboard监控数据无法正常显示

kubernetes集群三步安装

kubernetes1.12.0版本dashboard使用heapster无法正常显示监控数据

查看heapster日志:

E0228 20:01:05.019281       1 manager.go:101] Error in scraping containers from kubelet:30.0.1.4:10255: failed to get all container stats from Kubelet URL "http://30.0.1.4:10255/stats/container/": Post http://30.0.1.4:10255/stats/container/: dial tcp 30.0.1.4:10255: getsockopt: connection refused

Continue reading

istio安装使用教程

广告 | kubernetes各版本离线安装包

祝贺istio1.0发布, 在此献上教程一份

安装

安装k8s 强势插播广告

三步安装,不多说

安装helm, 推荐生产环境用helm安装,可以调参

Continue reading

kubernetes开发指南

广告 | kubernetes离线安装包,仅需三步

官方例子

大部分使用方式调用clientgo即可,我增加一些clientgo事例里没有的一些技巧

clientgo 事例地址

初始化客户端

这里给了两种初始化kubernetes客户端的方式,一种根据kubeconfig文件的路径,官方有,比较简单

另一种就是根据kubeconfig内容的字符串去初始化一个客户端,这种方式应用场景是比如我们把很多的kubeconfig文件存在了数据库中(多租户时)

Continue reading

kube-proxy源码解析

广告 | kubernetes离线安装包,仅需三步

kube-proxy源码解析

ipvs相对于iptables模式具备较高的性能与稳定性, 本文讲以此模式的源码解析为主,如果想去了解iptables模式的原理,可以去参考其实现,架构上无差别。

kube-proxy主要功能是监听service和endpoint的事件,然后下放代理策略到机器上。 底层调用docker/libnetwork, 而libnetwork最终调用了netlink 与netns来实现ipvs的创建等动作

Continue reading

kubernetes启用ipvs

广告 | kubernetes各版本离线安装包

1.11.1版本已经修复此bug,如在centos下使用ipvs模式建议升级到v1.11.1,包地址

1.11.0版本ipset bug说明

1.11.0版本centos下使用ipvs模式会出问题 65461

Jun 25 20:50:00 VM_3_4_centos kube-proxy[3828]: E0625 20:50:00.312569    3828 ipset.go:156] Failed to make sure ip set: &{{KUBE-LOOP-BACK hash:ip,port,ip inet 1024 65536 0-65535 Kubernetes endpoints dst ip:port, source ip for solving hairpin purpose} map[] 0xc42073e1d0} exist, error: error creating ipset KUBE-LOOP-BACK, error: exit status 2

Continue reading

kubeadm源码分析

k8s离线安装包 三步安装,简单到难以置信

kubeadm源码分析

说句实在话,kubeadm的代码写的真心一般,质量不是很高。

几个关键点来先说一下kubeadm干的几个核心的事:

  • kubeadm 生成证书在/etc/kubernetes/pki目录下
  • kubeadm 生成static pod yaml配置,全部在/etc/kubernetes/manifasts下
  • kubeadm 生成kubelet配置,kubectl配置等 在/etc/kubernetes下
  • kubeadm 通过client go去启动dns

Continue reading