-
master的固定静态pod启用
-
比如我们有一个网站在使用,如果某天我们的master崩溃了,我们就可以通过静态pod的方式让别人知道我们服务器在维护【维护是出故障的解释对吧】
- 我们可以通过查看kubelet详情查看配置文件的
这里面定义了基本信息,后面我们的操作也是基于这个配置文件
[root@node2 ~]# systemctl status kubelet | egrep -A 1 Drop-In
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
[root@node2 ~]#
[root@node2 ~]# cat /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment=“KUBELET_KUBECONFIG_ARGS=–bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --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
[root@node2 ~]#
默认路径查看
-
默认路径查询方式如下
-
1、先通过上面的配置文件,找到一个yaml结尾的文件
-
2、查看这个文件找到staticPodPath,后面的路径就是静态pod的默认路径了
[root@node2 ~]# cat /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf | grep yaml
Environment=“KUBELET_CONFIG_ARGS=–config=/var/lib/kubelet/config.yaml”
[root@node2 ~]#
[root@node2 ~]# cat /var/lib/kubelet/config.yaml | grep staticPodPath
staticPodPath: /etc/kubernetes/manifests
[root@node2 ~]#
默认命名空间创建【default】
- 这时候我们就可以把配置文件拷贝到我们默认的路径里面即可【配置文件和在master上的配置文件是一摸一样的】
注:当以yaml结尾配置文件存在这个路径里面以后,该pod就自动创建好了,不需要做任何操作
可以直接拷贝下面代码,vi 拷贝到任意yaml结尾的文件里
[root@node2 manifests]# cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1
name: pod1
namespace: ccx
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: pod1
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
[root@node2 manifests]#
然后我没做任何操作,当前所属路径和文件如下
[root@node2 manifests]# pwd
/etc/kubernetes/manifests
[root@node2 manifests]#
[root@node2 manifests]# ls
pod1.yaml
[root@node2 manifests]#
- 这时候我们去master节点上执行:
kubectl get pods -n default
,就可以直接查看到当前pod信息了
因为默认创建就是在default命名空间里面
[root@master ~]# kubectl get pods -n default
NAME READY STATUS RESTARTS AGE
pod1-node2 1/1 Running 0 6m21s
[root@master ~]#
指定命名空间创建pod
- 查看当前所有命名空间【master节点执行】
kubectl get ns
[root@master ~]# kubectl get ns
NAME STATUS AGE
ccx Active 21d
ccxhero Active 21d
default Active 26d
kube-node-lease Active 26d
kube-public Active 26d
kube-system Active 26d
ns1 Active 21d
pod-1 Active 12d
[root@master ~]#
- 指定ns创建就是在配置文件的
metadata
菜单下添加一行二级菜单:namespace: ns名称
【node节点执行】
如:我现在将node2上的pod1.yaml运行在ccx这个命名空间上
[root@node2 manifests]# mv pod1.yaml /
[root@node2 ~]# cd /
[root@node2 /]# vim pod1.yaml
[root@node2 /]# cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1
name: pod1
下面是我新增的,指定命名空间
namespace: ccx
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: pod1
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
[root@node2 /]#
- 配置文件编辑好了以后,我们直接移动到自定义的路径里面,就可以去master节点上查看到这个pod了
[root@node2 /]# mv pod1.yaml /etc/kubernetes/manifests
[root@node2 /]#
[root@node2 /]# cd /etc/kubernetes/manifests
[root@node2 manifests]#
[root@node2 manifests]# ls
pod1.yaml
[root@node2 manifests]#
master上可以看到,已经运行在ccx这个命名空间内了
[root@master ~]# kubectl get pods -n ccx | tail -n 1
pod1-node2 1/1 Running 0 6s
[root@master ~]#
路径添加
-
直接vim编辑上面查询到的配置文件,找到第一个
Environment
在最后面加上一个路径,然后这个路径就替换了默认路径,创建pod的配置文件就放在这里面即可 -
如,我自定义路径为/etc/kubernetes/kubelet.d,
则在第一个Environment
最后面加上--pod-manifest-path=/etc/kubernetes/kubelet.d
即可,其他不用变
全部配置文件如下
[root@node2 ~]# vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment=“KUBELET_KUBECONFIG_ARGS=–bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --pod-manifest-path=/etc/kubernetes/kubelet.d”
Environment=“KUBELET_CONFIG_ARGS=–config=/var/lib/kubelet/config.yaml”