赞
踩
一 静态Pod
- --- '静体现在哪?' ---
-
- 之前:前面Pod的'生命周期管理'都是通过像DaemonSet、StatefulSet、Deployment'上层'这种方式创建管理的
-
- 静态Pod是由kubelet进行管理'仅存在于特定Node上'的Pod -->'可以理解为定向调度' -->'如何定向调度涉及到创建方式'
-
- 它们'不能通过API Server'进行管理,无法与'ReplicationController'、'Deployment'或'DaemonSet'进行'关联'-->'就是一个Pod',并且kubelet也无法对其'健康检查'
-
- 总结: 静态Pod总是'由kubelet进行创建',并且总是'在kubelet所在的Node上'运行的
二 创建静态Pod
(1)配置文件
- '原理':kubelet 启动时由 '--pod-manifest-path' 指定的目录'默认/etc/kubernetes/manifests',kubelet会'定期扫描-->时间?'这个目录,并根据这个目录下的'.yaml 或 .json 文件'进行创建和更新操作
-
- 'kubeadm创建'集群时,几个核心的组件就是'以静态Pod的方式'部署的
-
- 后续体验:可以通过kubelet'命令行参数' '进行覆盖'
- 'kubeadm安装的k8s集群',配置文件路径:/var/lib/kubelet/config.yaml
-
- '二进制文件安装的k8s集群',配置文件路径:'/usr/lib/systemd/system/kubelet.service',在文件中添加一行--pod-manifest-path= 或者'放到 kubeadm-flags.env环境变量里面'
-
- 注意: 'node是没有--pod-manifest-path参数的',需要'手动指定'
-
- kubelet'不通过apiserver',启动一个静态pod!
master上有'静态pod的路径'
作用机理
- 1)如果把'pod的yaml描述文件放到'这个目录中,等kubelet扫描到文件,会'自动在本机-->文件所在node的kubelet'创建出来 pod
-
- 2)如果把 pod的yaml'文件更改'了,kubelet'也会识别'到,会'自动更新'pod
-
- 3)如果把 pod的'yaml文件删除'了,kubelet会'自动删除掉pod'
-
- 4)因为静态pod '不能被 api-server 直接管理',所以它的更新删除操作不能由 kubectl 来执行,'只能直接修改或删除文本'文件
-
- 备注:但是在etcd数据库'会进行记录'
案例演示
'静态pod的名字':mysql-${hostanme}
静态Pod不受Apiserver的管理
备注:少个过渡状态,'尝试删除静态Pod',有一个状态量'变成Pending',且'不会删除'
- 原因:k8s现在'使用的是etcd v3',必须提供'ca、key、cert',否则会出现'Error: context deadline exceeded'
-
- 备注:不加–endpoint参数时,'默认访问'的127.0.0.1:2379,而使用–endpoint参数时,'必须提供ca,key,cert'
-
- 'k8s采用的是https',在pod内,没有相关认证机制,所以'无法查看'
- wget https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz
-
- tar -zxf etcd-v3.4.3-linux-amd64.tar.gz
-
- cp etcd-v3.4.3-linux-amd64/etcdctl /usr/local/bin
-
- chmod a+x /usr/local/bin/etcdctl
-
- rm -fr etcd-v3.4.3-linux-amd64
写个别名
- alias etcdctl="ETCDCTL_API=3 /usr/local/bin/etcdctl \
- --endpoints=https://127.0.0.1:2379 \
- --cacert=/etc/kubernetes/pki/etcd/ca.crt \
- --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
- --key=/etc/kubernetes/pki/etcd/healthcheck-client.key"
-
- 注意:考虑到'权限和安全问题',只有root可以'查看相关'的数据,所以'root用户指定'
(2)HTTP方式
- 操作: 在'url放置了'一个pod创建的'描述文件'
-
- '工作原理':通过设置kubelet的启动参数"--manifest-url=<URL>",kubelet将会'定期从该URL地址下载Pod的定义文件',并且'转换成' JSON/YAML格式的'Pod定义文件',然后'创建Pod'
-
- 备注:'文件系统'上的'清单文件'使用方式类似,kubelet 调度'获取清单文件',如果静态Pod的清单文件'有改变',kubelet 会应用这些改变
- vim /etc/nginx/conf.d/yaml.conf
-
- ###### '配置文件' ######
- '以这个为案例'
-
- /usr/share/nginx/html/index.yaml
- '修改' --> vim /etc/sysconfig/kubelet
-
- 备注:这里没有在'/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf'中进行修改
重启看是否生效
注意: 修改'系统组件'需要知道路径
三 静态Pod的作用
- 由于静态Pod只受所在节点的kubelet控制,可以'有效预防通过kubectl、或管理工具操作的误删除',可以用来'部署核心组件'应用,保障应用服务总是'运行稳定数量'和提供'稳定服务'
-
- '可以用来定向调度' --> '在指定的位置放置静态pod的配置文件'
四 参考文档
(1)官方文档
(2)个人博客
(3)权威指南4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。