kubetnetes
文章平均质量分 59
qinzhao168
梦想 在远处 呐喊
展开
-
如何利用minikube 快速安装 kubernetes
1.安装虚拟机,因为minikube是依赖虚拟机来安装kubernetes,本文是采用VirtualBox安装过程就不详细说明了,主要是打开CPU支持虚拟化就好,因为现在大多数电脑都支持虚拟化技术了2.安装kubectl命令行工具通过命令行curl 工具安装最新版的kuberctl工具curl -LO https://storage.googleapis.com/kub原创 2017-06-17 13:13:06 · 1567 阅读 · 1 评论 -
kubernetes之Pod详解
pod的详细信息图 这个是借大师的图来给自己加油原创 2017-07-11 12:32:56 · 1239 阅读 · 0 评论 -
kubernetes之命令行提示(kubectl)神器kube-shell
1.安装pipmac:curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo pythonsudo easy_install pipcentos: sudo yum -y install epel-release sudo yum -y install python-pip2.通过pip 安装kube-shell pip ins原创 2017-07-02 13:43:08 · 4869 阅读 · 0 评论 -
用client-go二开kubernetes glide的golang 的包管理
1.下载client-go官网地址自行查找,通过go get 或者 git clone 都可以 2.安装minikube 3.执行 kubectl config view apiVersion: v1clusters:- cluster: certificate-authority: /Users/xinzhiyun/.minikube/ca.crt serve原创 2017-06-23 12:33:09 · 907 阅读 · 0 评论 -
kubeadm 安装kubetnetes(flannel)
声明:本文参照官网进行安装,具体请前往官网查看 1.环境准备 ip hostname 192.168.1.108 master 192.168.1.107 slave 192.168.1.109 slave1配置hosts vi /etc/hosts2.安装docker yum install docker3.安装kubectl 相关的bash自动补全原创 2017-06-24 14:29:52 · 19466 阅读 · 1 评论 -
kubeadm安装kubernetes(calico)
声明:接上一篇博客kubeadm安装kubernetes(flannel) 环境等都是一样,只是换了CNI而已,相关环境请参考kubeadm安装kubernetes(flannel)1.calico官网描述 自行下载 calico.yaml文件[root@master kubernetes]# kubectl get pods -n kube-systemNAME原创 2017-06-24 20:12:08 · 5242 阅读 · 1 评论 -
kubeadm安装kubernetes(canal)
声明:接博客kubeadm安装kubernetes(flannel) 环境等都是一样,只是换了CNI而已,相关环境请参考kubeadm安装kubernetes(flannel)1.请查看 canal github 2.canal是flannel以及calico的综合产物,所需的镜像image: quay.io/calico/node:v1.2.1image: quay.io/calico/cn原创 2017-06-24 20:56:51 · 2893 阅读 · 0 评论 -
kubeadm安装kubernetes(weave)
声明:接博客kubeadm安装kubernetes(flannel) 环境等都是一样,只是换了CNI而已,相关环境请参考kubeadm安装kubernetes(flannel)未成功,估计是官方镜像存在bug,有兴趣的可以一起研究学习请自行下载weave-daemonset-k8s-1.6.yamlweave.yaml[root@master kubernetes]# kubectl create原创 2017-06-25 00:20:49 · 7475 阅读 · 0 评论 -
drone安装
本文参考 官网安装docker 以及docker-compose 详情请自己查询详情如下:1. pull 镜像docker pull drone/drone:0.72.创建docker-compose.yml文件[root@reg drone]# cat docker-compose.yml version: '2'services: drone-server: image: dron原创 2017-08-15 22:48:58 · 3515 阅读 · 1 评论 -
kubernetes之kube-policy-controller
1.目录/etc/kubernetes/manifests/kube-policy-controller.json{ "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "kube-policy-controller", "namespace": "kube-system", "creationTime原创 2017-09-14 10:25:36 · 818 阅读 · 0 评论 -
kubernetes initcontainer <=1.5 yaml 例子
apiVersion: v1 kind: Pod metadata: name: qinzhao namespace: qinzhao labels: app: myapp annotations: pod.beta.kubernetes.io/init-containers: ‘[ { “name”: “i原创 2017-09-23 00:06:15 · 600 阅读 · 0 评论 -
kubernetes init-container
apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: jenkinsspec: replicas: 1 template: metadata: labels: app: jenkins annotations: pod.beta.kubernetes原创 2017-09-23 21:18:51 · 2368 阅读 · 0 评论 -
kubernetes1.7新特性:PodDisruptionBudget控制器变化
背景概念在Kubernetes中,为了保证业务不中断或业务SLA不降级,需要将应用进行集群化部署。通过PodDisruptionBudget控制器可以设置应用POD集群处于运行状态最低个数,也可以设置应用POD集群处于运行状态的最低百分比,这样可以保证在主动销毁应用POD的时候,不会一次性销毁太多的应用POD,从而保证业务不中断或业务SLA不降级。在Kubernetes 1.5中,kubectl d转载 2017-10-17 21:54:03 · 914 阅读 · 0 评论 -
Kubernetes1.7新特性:支持绕过docker,直接通过containerd管理容器
从Docker1.11版本开始,Docker依赖于containerd和runC来管理容器,containerd是控制runC的后台程序,runC是Docker公司按照OCI标准规范编写的一个操作容器的命令行工具,containerd这个后台程序还可以操作满足OCI标准规范的其他容器工具,也就意味着以后只要是按照OCI标准规范开发的容器工具,都可以被containerd使用起来。使用containe转载 2017-10-17 22:17:48 · 503 阅读 · 0 评论 -
kubetnetes 之存储 PV PVC
概述k8s最初用于管理无状态的服务,单随着越来越多的应用迁移的k8s平台,管理存储资源成为一个非常重要的功能。k8s使用两种资源管理存储: PersistentVolume(一些简称PV):由管理员添加的的一个存储的描述,是一个全局资源,包含存储的类型,存储的大小和访问模式等。它的生命周期独立于Pod,例如当使用它的Pod销毁时对PV没有影响。 PersistentVolumeClaim(一些简转载 2017-10-01 08:23:09 · 8123 阅读 · 0 评论 -
CNI:容器网络接口
CNI 简介不管是 docker 还是 kubernetes,在网络方面目前都没有一个完美的、终极的、普适性的解决方案,不同的用户和企业因为各种原因会使用不同的网络方案。目前存在网络方案 flannel、calico、openvswitch、weave、ipvlan等,而且以后一定会有其他的网络方案,这些方案接口和使用方法都不相同,而不同的容器平台都需要网络功能,它们之间的适配如果没有统一的标准,会转载 2017-10-03 11:08:55 · 602 阅读 · 0 评论 -
kubernetes组件kubelet之源码分析 启动流程
1.kubelet简介kubelet是在每个节点上运行的主要“节点代理”。 kubelet的工作原理是PodSpec。 kubelet采用一组通过各种机制提供的PodSpecs(主要通过apiserver),并确保这些PodSpec中描述的容器运行正常。 kubelet不管理不是由Kubernetes创建的容器。 除了来自Apiserver的PodSpec之外,还有三种可以向Kubele转载 2017-10-03 11:50:49 · 1236 阅读 · 0 评论 -
kubernetes源码阅读之kubelet pod之来源
kubelet最重要的职责就是pod(多个容器)的生命周期管理,那pod的来源是哪里呢?看一下创建中一个容易忽略的函数源码路径 /k8s.io/kubernetes/pkg/kubelet/kubelet.gofunc NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *KubeletDeps, sta转载 2017-10-03 16:28:59 · 558 阅读 · 0 评论 -
kubelet之DockerClient源码分析
DockerClient 是KubeletDeps结构体的成员变量type KubeletDeps struct { // TODO(mtaufen): KubeletBuilder: // Mesos currently uses this as a hook to let them make their own call to //原创 2017-10-03 17:11:13 · 478 阅读 · 0 评论 -
kubelet源码分析-pod新建流程
syncLoopsyncLoop 是 kubelet 的主循环方法,它从不同的管道(文件、URL 和 apiserver)监听变化,并把它们汇聚起来。当有新的变化发生时,它会调用对应的处理函数,保证 pod 处于期望的状态。如果 pod 没有变化,它也会定期保证所有的容器和最新的期望状态保持一致。这个方法是 for 循环,不会退出。func (kl *Kubelet) syncLoop(update转载 2017-10-03 20:21:34 · 1242 阅读 · 0 评论 -
kubelet 源码分析:statusManager 和 probeManager
kubelet 源码分析:statusManager 和 probeManager在 kubelet 初始化的时候,会创建 statusManager 和 probeManager,两者都和 pod 的状态有关系,因此我们放到一起来讲解。statusManager 负责维护状态信息,并把 pod 状态更新到 apiserver,但是它并不负责监控 pod 状态的变化,而是提供对应的接口供其他组件调用转载 2017-10-03 22:59:40 · 901 阅读 · 0 评论 -
kubelet 源码分析: 事件处理
kubelet 事件机制我们知道 kubernetes 是分布式的架构,apiserver 是整个集群的交互中心,客户端主要和它打交道,kubelet 是各个节点上的 worker,负责执行具体的任务。对于用户来说,每次创建资源的时候,除了看到它的最终状态(一般是运行态),希望看到资源执行的过程,中间经过了哪些步骤。这些反馈信息对于调试来说非常重要,有些任务会失败或者卡在某个步骤,有了这些信息,我们转载 2017-10-03 23:08:50 · 794 阅读 · 0 评论 -
Kubelet源码分析之diskSpaceManager
kubernetes版本v1.5.0 diskSpaceManager在结构体kubelet// Kubelet is the main kubelet implementation.type Kubelet struct { ... // Diskspace manager. diskSpaceManager diskSpaceManager // Cached原创 2017-10-04 14:11:41 · 575 阅读 · 0 评论 -
kubernetes之kube-proxy源码分析
本代码分析基于kubernetes v1.5.0 功能描述 kube-proxy应该是k8s所有服务里面最简单的服务,它的功能很单一,主要用来管理service,包括service的负载均衡。每个service都有一个cluster ip,service依靠selector label,对应后台的Pod,这个工作主要有kube-controller-manager的endpoint-contro原创 2017-10-04 15:48:09 · 2608 阅读 · 0 评论 -
kubernetes之Scheduler分析
1. kubernetes Scheduler 简介kubernetes Scheduler 运行在 master 节点,它的核心功能是监听 apiserver 来获取 PodSpec.NodeName 为空的 pod,然后为每个这样的 pod 创建一个 binding 指示 pod 应该调度到哪个节点上。从哪里读取还没有调度的 pod 呢?当然是 apiserver。怎么知道 pod 没有调度呢?转载 2017-10-11 23:01:19 · 4311 阅读 · 0 评论 -
Kubernetes Informer 详解
Informer 简介这边文章只是个人爱好转载,不提供任何的意见和建议Informer 基础功能Informer 是 Client-go 中的一个核心工具包。在 Kubernetes 源码中,如果 Kubernetes 的某个组件,需要 List/Get Kubernetes 中的 Object,在绝大多 数情况下,会直接使用 Informer 实例中的 Lister()方法(该方法包含 了 Get转载 2017-10-15 14:18:00 · 2280 阅读 · 1 评论 -
kubernetes client-go
以下文章为章骏原创,感谢供稿。今天给大家介绍一下如何使用 client-go 来拓展 Kubernetes API,写一个 Kubernetes 的控制器。client-go 是 Kubernetes 官方推出的一个库,方便我们来调用 Kubernetes 的 RESTful API。控制流Overview 首先,控制器需要与 kubernetes apiserver 进行通讯,则需要一个 cli转载 2017-10-15 14:34:49 · 6290 阅读 · 1 评论 -
kubernetes 通过annotations指定调度节点
kubernetes 通过annotations指定调度节点:scheduler.alpha.kubernetes.io/affinity: '{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"system/build原创 2017-11-28 15:19:58 · 3561 阅读 · 0 评论 -
kubernetes代码编译
用的是kubernetes提供的,项目为kubernetes的项目下所需要的包,有些不一定需要➜ k8s.io ls -ltotal 0drwxr-xr-x@ 11 xinzhiyun staff 374 11 29 10:52 apimachinerydrwxr-xr-x@ 12 xinzhiyun staff 408 6 26 23:49 autoscalerdrwxr-原创 2017-11-29 15:06:06 · 2418 阅读 · 0 评论 -
kubernetes的编译、打包
使用本地环境编译kubernetes对golang的版本有要求,具体情况见k8s development Guide:kubernetes requires Go 1.0 - 1.2 1.4.2 1.3, 1.4 1.6 1.5, 1.6 1.7 - 1.7.5 1.7+ 1.8.1 如果是在MAC上操作,因为MAC的shell命令转载 2017-12-04 22:22:34 · 6679 阅读 · 0 评论 -
kubernetes labels的创建以及使用
1.创建labelkubectl label nodes <node-name> <label-key>=<label-value>2.查看labelskubectl get nodes -Lsystem/build-node原创 2017-11-27 14:33:59 · 4347 阅读 · 0 评论 -
kubernetes 获取PersistentVolumeClaim大小
kubernetes 获取PersistentVolumeClaim大小不像获取CPU和MEMORY那样方便:pod.Spec.Containers[0].Resources.Limits.Memory().Value()pod.Spec.Containers[0].Resources.Limits.Cpu().Value()原因是kubernetes提供了获取CPU和Memory的指针方法但没有原创 2017-12-30 22:21:03 · 2711 阅读 · 0 评论 -
kubernetes kubelet挂掉问题分析
环境描述kubernetes 组建的运行方式kubelet : systemd 运行 其他都是docker起的容器问题描述1.有pod状态处于Unknow状态[root@master-64 ~]# kubectl get pods adminapi-www-idc-1846448753-k5gbm -n yuntu-www-idc -owideNAME原创 2018-01-30 23:40:43 · 21466 阅读 · 3 评论 -
kubernetes pod NodeLost 分析
问题描述[root@master-64 ~]# kubectl get pods -n kube-system -owide| grep -v RunningNAME READY STATUS RESTARTS AGE IP NODEc原创 2018-01-31 15:33:45 · 4303 阅读 · 0 评论 -
新增kubernetes node 镜像pull 不下来的解决办法
遇到了个问题,打了label 的nodeselect 的时候,老是 pull 不下镜像,因而引起新增节点采集日志失败现象如下: fluentd搜集不到日志错误现象解决办法重新执行: docker login xxxxxxx然后重启kubelet进程就可以了另外每个master节点的hosts 也要添加相应的节点信息END原创 2018-01-26 15:18:55 · 3577 阅读 · 0 评论 -
kubelet nodelost
问题现状docker 的日志-- Logs begin at Sat 2018-02-03 12:35:25 CST, end at Sun 2018-02-04 11:46:01 CST. --Feb 03 12:35:33 slave-20-62 systemd[1]: Starting Docker Application Container Engine...Feb 03 12原创 2018-02-04 11:58:54 · 1786 阅读 · 0 评论 -
kubernetes启动Pod遇到CrashLoopBackOff的解决思路
1.问题现状通过命令行工具kubectl 获取异常容器[root@master ~]# kubectl get pods -n kube-system | grep -v RunningNAME READY STATUS RESTARTS AGEprometheus-tim原创 2018-01-29 11:23:44 · 142011 阅读 · 2 评论 -
kubernetes ceph is locked by other nodes 错误解决方案
1.问题描述pod的状态一直处于ContainerCreating状态[root@master ~]# kubectl get pods -n wangweidd | grep -v RunningNAME READY STATUS RESTARTS AGEenncloud-1 0/1 ContainerCre原创 2018-01-29 15:24:30 · 1132 阅读 · 0 评论 -
限制 kubernetes 跑的业务容器所起的进程数
现象描述发现业务容器,不停地起线程,现象如下:[root@master ~]# kubectl logs appserv-2336744132-qhd2d -n xiaojiang... WARNING: Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.facto原创 2018-01-29 19:01:00 · 1523 阅读 · 0 评论 -
kubernetes calico网络不通的排查思路
网络不通通俗一点就是报文不可达 在这里就不多说了举个例子容器A访问不了容器B,也就是容器A ping 不通容器B排查思路:正向1 容器A的内容是否发送到容器A所在的node上2 容器A所在的节点node是否发送出去3 容器B所在的节点node是否接收到容器A所在的节点node发送的报文4 容器B所在的节点node是否把报文发送到容器B中反向1 容器B的内容...转载 2018-03-11 11:49:54 · 20277 阅读 · 2 评论