【Kubernetes】Pod学习(二)部署一个静态Pod

此文为学习《Kubernetes权威指南》的相关笔记

个人思路:

静态Pod不同于普通Pod的灵活应用,他仅仅只能在需要部署的Node上创建和删除,不能通过API Server进行管理,也无法被RC、RS、Deployment、Job等数据对象关联起来,与此同时,也不会被进行健康检查。

关于静态Pod的使用场景,暂时理解为:Node上需要的应当持续运行的长期设施,比如在环境部署时使用静态Pod实现一部分组件。

下面尝试运行一个静态Pod

1、使用配置文件方式,新建配置文件

默认的配置文件目录为/etc/kubernetes/manifests,kubelet启动后定期扫描该目录,一旦有新的配置文件创建,就尝试根据该文件建立静态Pod,

进入该文件夹下:

# cd /etc/kubernetes/manifests

创建配置文件static-web.yaml

apiVersion: v1
kind: Pod
metadata:
 name: static-web
 labels:
  name: static-web
spec:
 containers:
 - name: static-web
   image: nginx
   ports:
   - name: web
     containerPort: 80

2、查看容器列表,可以看到该配置文件已经被快速部署:

# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS               NAMES
2673d4e8e706        nginx                    "nginx -g 'daemon of…"   9 minutes ago       Up 9 minutes                            k8s_static-web_static-web-xu.node1_default_fb1096b8e2ddd18472557b2732ffa399_0


3、在Master结点查看Pod,可以看到这个节点存在

# kubectl get pods
NAME                  READY   STATUS    RESTARTS   AGE
redis-php             2/2     Running   2          10h
static-web-xu.node1   1/1     Running   0          10m

 

4、尝试在Master节点删除该Pod,只能将状态改变为pending

# kubectl delete pod static-web-xu.node1
pod "static-web-xu.node1" deleted
# kubectl get pods
NAME                  READY   STATUS    RESTARTS   AGE
static-web-xu.node1   0/1     Pending   0          3s

5、需要在Node节点的配置文件夹中删除配置文件,才能真正删除该Pod

# rm /etc/kubernetes/manifests/static-web.yaml
rm: remove regular file ‘static-web.yaml’? y

6、修改启动参数,改变配置文件目录的方法

由于本k8s集群使用kubeadm部署,应当能找到Node节点上Kubelet服务的启动参数,位置为:

vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

 修改Environment参数内容,添加配置: --pod-manifest-path=<your path>

# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --pod-manifest-path=/etc/kubelet.d --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS$KUBELET_EXTRA_ARGS                                                                                                                       

重载服务:

# systemctl daemon-reload
# systemctl restart kubelet

在自定义配置文件夹中新建配置文件,可以看到该配置文件成功被扫描并建立静态Pod!

7、HTTP方式部署静态Pod

k8s支持通过HTTP协议访问远程URL中的配置文件,设置启动参数为“--manifest-url”,设置方法与6相同,通过这种方式,在Node配置时制定集群同一功能身份的节点相同的URL,可以统一给节点部署静态Pod,实现了大规模的实时配置,也扩宽了静态Pod的应用场景。

    

发布了27 篇原创文章 · 获赞 0 · 访问量 962

猜你喜欢

转载自blog.csdn.net/qq_38093301/article/details/103469288