当前位置:   article > 正文

kubernetes杂谈之(二)静态Pod_静态pod和动态pod的主要区别

静态pod和动态pod的主要区别

一    静态Pod

  1. --- '静体现在哪?' ---
  2. 之前:前面Pod的'生命周期管理'都是通过像DaemonSet、StatefulSet、Deployment'上层'这种方式创建管理的
  3. 静态Pod是由kubelet进行管理'仅存在于特定Node上'的Pod -->'可以理解为定向调度' -->'如何定向调度涉及到创建方式'
  4. 它们'不能通过API Server'进行管理,无法与'ReplicationController''Deployment''DaemonSet'进行'关联'-->'就是一个Pod',并且kubelet也无法对其'健康检查'
  5. 总结: 静态Pod总是'由kubelet进行创建',并且总是'在kubelet所在的Node上'运行的

二    创建静态Pod

(1)配置文件

  1. '原理':kubelet 启动时由 '--pod-manifest-path' 指定的目录'默认/etc/kubernetes/manifests',kubelet会'定期扫描-->时间?'这个目录,并根据这个目录下的'.yaml 或 .json 文件'进行创建和更新操作
  2. 'kubeadm创建'集群时,几个核心的组件就是'以静态Pod的方式'部署的
  3. 后续体验:可以通过kubelet'命令行参数' '进行覆盖'
  1. 'kubeadm安装的k8s集群',配置文件路径:/var/lib/kubelet/config.yaml
  2. '二进制文件安装的k8s集群',配置文件路径:'/usr/lib/systemd/system/kubelet.service',在文件中添加一行--pod-manifest-path= 或者'放到 kubeadm-flags.env环境变量里面'
  3. 注意: 'node是没有--pod-manifest-path参数的',需要'手动指定'
  4. kubelet'不通过apiserver',启动一个静态pod!
master上有'静态pod的路径'

 

 

作用机理

  1. 1)如果把'pod的yaml描述文件放到'这个目录中,等kubelet扫描到文件,会'自动在本机-->文件所在node的kubelet'创建出来 pod
  2. 2)如果把 pod的yaml'文件更改'了,kubelet'也会识别'到,会'自动更新'pod
  3. 3)如果把 pod的'yaml文件删除'了,kubelet会'自动删除掉pod'
  4. 4)因为静态pod '不能被 api-server 直接管理',所以它的更新删除操作不能由 kubectl 来执行,'只能直接修改或删除文本'文件
  5. 备注:但是在etcd数据库'会进行记录'

案例演示

'静态pod的名字':mysql-${hostanme}

 静态Pod不受Apiserver的管理

备注:少个过渡状态,'尝试删除静态Pod',有一个状态量'变成Pending',且'不会删除'

etcd查看pod数据报错

  1. 原因:k8s现在'使用的是etcd v3',必须提供'ca、key、cert',否则会出现'Error: context deadline exceeded'
  2. 备注:不加–endpoint参数时,'默认访问'的127.0.0.1:2379,而使用–endpoint参数时,'必须提供ca,key,cert'
  3. 'k8s采用的是https',在pod内,没有相关认证机制,所以'无法查看'

下载对应版本的etcd

  1. wget https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz
  2. tar -zxf etcd-v3.4.3-linux-amd64.tar.gz
  3. cp etcd-v3.4.3-linux-amd64/etcdctl /usr/local/bin
  4. chmod a+x /usr/local/bin/etcdctl
  5. rm -fr etcd-v3.4.3-linux-amd64

写个别名

  1. alias etcdctl="ETCDCTL_API=3 /usr/local/bin/etcdctl \
  2. --endpoints=https://127.0.0.1:2379 \
  3. --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  4. --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
  5. --key=/etc/kubernetes/pki/etcd/healthcheck-client.key"
  6. 注意:考虑到'权限和安全问题',只有root可以'查看相关'的数据,所以'root用户指定'

etcdctl相关参数

官网etcdctl的demo

(2)HTTP方式

  1. 操作: 在'url放置了'一个pod创建的'描述文件'
  2. '工作原理':通过设置kubelet的启动参数"--manifest-url=<URL>",kubelet将会'定期从该URL地址下载Pod的定义文件',并且'转换成' JSON/YAML格式的'Pod定义文件',然后'创建Pod'
  3. 备注:'文件系统'上的'清单文件'使用方式类似,kubelet 调度'获取清单文件',如果静态Pod的清单文件'有改变',kubelet 会应用这些改变
  1. vim /etc/nginx/conf.d/yaml.conf
  2. ###### '配置文件' ######

  1. '以这个为案例'
  2. /usr/share/nginx/html/index.yaml

  1. '修改' --> vim /etc/sysconfig/kubelet
  2. 备注:这里没有在'/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf'中进行修改

重启看是否生效

注意: 修改'系统组件'需要知道路径

三    静态Pod的作用

  1. 由于静态Pod只受所在节点的kubelet控制,可以'有效预防通过kubectl、或管理工具操作的误删除',可以用来'部署核心组件'应用,保障应用服务总是'运行稳定数量'和提供'稳定服务'
  2. '可以用来定向调度' --> '在指定的位置放置静态pod的配置文件'

四   参考文档

(1)官方文档

(2)个人博客

(3)权威指南4

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/471685
推荐阅读
相关标签
  

闽ICP备14008679号