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
