kubernetes杂谈之(二)静态Pod

一    静态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',且'不会删除'

etcd查看pod数据报错

原因:k8s现在'使用的是etcd v3',必须提供'ca、key、cert',否则会出现'Error: context deadline exceeded'

备注:不加–endpoint参数时,'默认访问'的127.0.0.1:2379,而使用–endpoint参数时,'必须提供ca,key,cert'

'k8s采用的是https',在pod内,没有相关认证机制,所以'无法查看'

下载对应版本的etcd

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用户指定'

etcdctl相关参数

官网etcdctl的demo

(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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值