记录工作中遇到的k8s的坑和简单用法

1、k8s指定node节点启动pod

  • 在工作中遇到集群节点通信问题,需要指定节点启动pod的情况,这个时候就要去修改yaml脚本。

  • 首先我需要知道指定节点上的标签,k8s不能直接指定hostname进行节点指定,需要从节点的label中找到特征的key-value,用 nodeSelector 这个字段,放在containers的同级。不要用TAB键。

    执行下面这条命令

kubectl get node --show-labels
# 结果如下
10-111-22-34    Ready    <none>   121d   v1.14.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=10-111-22-34 
10-111-33-44   Ready    master   224d   v1.14.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=10-111-33-44

从上面的结果中,我们获取到 kubernetes.io/hostname=10-111-33-44 这个字段,放入到下面的yaml中,即可实现指定节点的目的。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hyper-rt-backend
  namespace: hyper-rt
spec:
  replicas: 1
  template:
    metadata:
      labels:
        task: hyper-rt
        app: hyper-rt-backend
    spec:
      nodeSelector:
        kubernetes.io/hostname: 10-111-33-44 # 这个是指定节点启动,key:value类型
      containers:
	........

2 、强制删除pod

kubectl delete pod nginx-deployment-759484bc6d-t9f72 --force --grace-period=0

3、label操作

# 获取所有节点label
kubectl get node --show-labels
# 删除label
kubectl label node xxx gpuname-
# 创建label
kubectl label node xxx gpuname=00
# 修改label
kubectl label node xxx gpuname=1080 --overwrite
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐