[k8s] kubelet单组件启动静态pod
kubelet单组件启动静态pod
无需k8s其他组件,单独下载kubelet的二进制,可以启动静态pod.
静态pod不受api管理,kubectl get po可以看到,但是kubectl delete pod 删除后,出去pending状态, 节点容器并没有删除,要想删除,去节点操作kubelet相对应的目录文件
静态pod创建有2中方法: 最常用的配置文件方法,还有http方法.
配置文件形式
- 获取pause镜像787k
docker pull lanny/gcr.io_google_containers_pause-amd64:3.0
docker tag lanny/gcr.io_google_containers_pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0
- 启动kubelet
mkdir -p /root/k8s/manifests
kubelet --allow-privileged=true --pod-manifest-path=/root/k8s/manifests --cluster-dns=10.254.0.2 --cluster-domain=cluster.local --v=2
- manifests静态pod目录下新建busybox-count.yml
[root@n1 ~]# cat /root/k8s/manifests/busybox-count.yml
apiVersion: v1
kind: Pod
metadata:
name: counter
spec:
containers:
- name: count
image: busybox
args: [/bin/sh, -c,
'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']
- 自动启动成功
[root@n1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf0d15b72b5e busybox "/bin/sh -c 'i=0; ..." 4 minutes ago Up 4 minutes k8s_count_counter-n1.ma.com_default_0f4803e09eeb6a864cc007da1ad165f3_0
92d6592d972f gcr.io/google_containers/pause-amd64:3.0 "/pause" 4 minutes ago Up 4 minutes k8s_POD_counter-n1.ma.com_default_0f4803e09eeb6a864cc007da1ad165f3_0
- kubelet退出后,pod依旧running
- docker rm容器后,这个容器exit状态,kubelet会重新runing一个容器
- busybox+pause=pod 共享ip协议栈(IP+mac一样)
- pause的ip和mac
[root@n1 ~]# docker inspect 92d6592d972f|grep -i ipaddr
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
[root@n1 ~]# docker inspect 92d6592d972f|grep -i mac
"MacAddress": "02:42:ac:11:00:02",
"MacAddress": "02:42:ac:11:00:02",
- busybox的ip和mac
[root@n1 ~]# docker exec bf0d15b72b5e ip ad
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 scope global eth0
valid_lft forever preferred_lft forever
- kubelet启动参数里的dns和域会被注入进去.
[root@n1 ~]# docker exec -it bf0d15b72b5e sh
/ # cat /etc/resolv.conf
nameserver 10.254.0.2
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
/ # cat /etc/hosts
172.17.0.2 counter-n1.ma.com
/ #
docker的dns设置
/usr/bin/dockerd --insecure-registry=10.233.0.0/18 --graph=/var/lib/docker --log-opt max-size=50m --log-opt max-file=5 --iptables=false --dns 10.233.0.3 --dns 114.114.114.114 --dns-search default.svc.cluster.local --dns-search svc.cluster.local --dns-opt ndots:2 --dns-opt timeout:2 --dns-opt attempts:2
docker run -it --rm busybox
/ # cat /etc/resolv.conf
search default.svc.cluster.local svc.cluster.local
nameserver 10.233.0.3
nameserver 114.114.114.114
http方式
kubelet会定期向这个url请求yaml,来更新pod
--manifest-url string URL for accessing the container manifest
[k8s] kubelet单组件启动静态pod的更多相关文章
- 静态Pod
静态Pod kubernetes 除了我们常用的普通Pod外,还有一种特殊的Pod,叫静态Pod. 概念 静态Pod是直接由节点kubelet进程来管理的,不能通过apiserver的master节点 ...
- kubelet源码分析——监控Pod变更
前言 前文介绍Pod无论是启动时还是关闭时,处理是由kubelet的主循环syncLoop开始执行逻辑,而syncLoop的入参是一条传递变更Pod的通道,显然syncLoop往后的逻辑属于消费者一方 ...
- 同事提出个我从未想过的问题,为什么Kubernetes要"多此一举"推出静态Pod概念?
同事提出个我从未想过的问题,为什么Kubernetes要"多此一举"推出静态Pod概念? 我们知道k8s中Pod可以说是一个合格的容器小管家,Pod 被设计成支持多个容器可以一起进 ...
- pod(七):静态pod
目录 一.系统环境 二.前言 三.静态pod 3.1 何为静态pod 3.2 创建静态pod 3.2.1 使用--pod-manifest-path指定静态pod目录 3.2.2 静态pod默认目录/ ...
- k8s核心资源之namespace与pod污点容忍度生命周期进阶篇(四)
目录 1.命名空间namespace 1.1 什么是命名空间? 1.2 namespace应用场景 1.3 namespacs常用指令 1.4 namespace资源限额 2.标签 2.1 什么是标签 ...
- kubelet源码分析——关闭Pod
上一篇说到kublet如何启动一个pod,本篇讲述如何关闭一个Pod,引用一段来自官方文档介绍pod的生命周期的话 你使用 kubectl 工具手动删除某个特定的 Pod,而该 Pod 的体面终止限期 ...
- reactjs入门到实战(八)----表单组件的使用
表单组件支持几个受用户交互影响的属性: value,用于 <input>.<textarea> 组件. checked,用于类型为 checkbox 或者 radio 的 &l ...
- Bootstrap日期和时间表单组件运用兼容ie8
准备动作先到下载Bootstrap日期和时间组件. 1:引入bootstrap.min.css,因为bootstrap-datetimepicker里面的很多样式依赖bootstarp的主样式,字体文 ...
- ReactJS实用技巧(2):从新人大坑——表单组件来看State
不太清楚有多少初学React的同学和博主当时一样,在看完React的生命周期.数据流之后觉得已经上手了,甩开文档啪啪啪的开始敲了起来.结果...居然被一个input标签给教做人了. 故事是这样的:首先 ...
随机推荐
- 多mysql实例下开发需要注意主从同步延迟
今天晚上服务器上线测试,遇到了一个问题! 往数据库写了一条数据之后,再读取该记录,居然读不出来,报空指针.十分费解,喊来开发组长定位问题.他的解释是:写操作用的是主库,而读操作用的是从库.在写库写完之 ...
- 简单通俗讲解DOM
在开始之前先说一点,DOM是非常容易理解的,但是大家说的太官方,让人很是难于理解,我们就用非常简单的语言翻译一遍.加深对DOM的理解,从而对它有一个全面的认识. 什么是DOM DOM的全称是Docum ...
- OSX: SSH密钥使用日记(2)
准备钥匙和锁(密钥对): $ pwd /Users/test $ ssh-keygen -t dsa -C "$(whoami)@$(hostname),$(date '+%F %T')&q ...
- VB总结1-事件过程之键盘鼠标过程
事件过程:参考 (http://baike.baidu.com/view/1523990.htm) 事件是指对象对于外部动作的响应,当对象发生了某个事件,就会执行与此对象的这个事件相应的代码,这段代码 ...
- js 判断iframe是否加载完毕
js 判断iframe是否加载完毕 CreationTime--2018年9月13日15点30分 Author:Marydon 1.javascript实现 window.onload = fun ...
- eclipse could not create the Java Vitual Machine
eclipse could not create the Java Vitual Machine CreateTime--2018年4月27日11:07:15 Author:Marydon 1.情 ...
- google kaptcha 验证码组件使用简介
kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.K ...
- openssl的证书格式转换
证书转换 PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 ...
- linux 挂载硬件设备
mount命令用于挂载文件系统,格式为:“mount 文件系统 挂载目录”. 挂载是在使用硬件设备前的最后操作的一步,只需要用mount命令把硬件设备与一个目录做关联,然后就能在这个目录中看到硬件设备 ...
- pip简单配置
pip安装Python模块的工具,等价于Redhat中的yum! 01.下载 百度云盘:http://pan.baidu.com/s/1eRHGBfk ###相关的 Linux ...