labels:
根据region=gpu查询所属node
1、kubectl get node -l region=gpu -o wide
kubectl get node -l 'region=underlay, cicd=true' -o wide
查看有哪些labels为region=gpu的node
2、kubectl get node --show-labels |grep 'region=gpu'
查看node状态,信息
kubectl describe node nodename
1、处理构建缺失镜像:
################################################
镜像打包:
docker tag 本地镜像 dockerHub仓库地址:tagName
上传镜像:
docker push dockerHub仓库地址:tagName
拉取镜像:
docker pull remoteSpaceName/test00:hello_bak
################################################
通过cicd构建地址确定应用,再通过该应用的的【监控】确定hostip(物理机地址),再登录物理机地址查看相关镜像
docker images |grep '****'
docker tag ****.**.lo/online/****:26d59fb0 harborlt3.****.lo/online/****:26d59fb0
docker login harborlt3.****.lo
docker push harborlt3.****.lo/online/****:26d59fb0
通过yaml文件启动pod
kubectl apply -f xxx.yaml
查看pod的日志
kubectl -n [namespace] logs [podname]
查看configmap
kubectl get configmap -n cloudcrd -o wide -o yaml
kubectl get pods -n cloudcrd -o wide -o yaml
kubectl get pods -n cloudcrd
kubectl -n cloudcrd logs cloudcrd-0
查询加入节点的命令,在master上执行
kubeadm token create --print-join-command
查看node下哪些pod级运行情况
kubectl get pod -o wide |grep '****-****.host'
kubectl describe nodes ****-****.host
通过grep nodes的主机名查看所有namespace下的pod
kubectl get pod -o wide --all-namespaces |grep '****-****.host'
在node机器上看pod
crictl pods
########configmap########
# 查看ConfigMap列表
kubectl get configmap
# 查看ConfigMap cm-appvars
kubectl describe configmap cm-appvars
# 以yaml的形式输出cm-appvars
kubectl get configmap cm-appvars -o yaml
通过job进行etcd备份
#1、创建namespace
kubectl create ns etcd-backup
#2、创建configmap
kubectl create -f configmap-etcd-backup-scripts.yaml
####less configmap-etcd-backup-scripts.yaml
apiVersion: v1
data:
etcd_backup.sh: |
#!/bin/sh
TARGET_ENDPOINT="$target_endpoint_1"
etcdctl --endpoints=${TARGET_ENDPOINT} endpoint health
if [ $? -ne 0 ]
then
TARGET_ENDPOINT="$target_endpoint_2"
fi
etcdctl --endpoints=${TARGET_ENDPOINT} snapshot save /data/etcd-backup.db
rename_file.sh: |
#!/bin/sh
datestr=$(date "+%Y%m%d%H%M%S")
mv /tmp_dir/etcd-backup.db /data/${clusterName}_${datestr}.db
find /data/ -mtime +7 -name "${clusterName}_*.db" | while read LINE
do
echo "Deletting file: ${LINE}"
rm -f ${LINE}
done
echo "Done."
kind: ConfigMap
metadata:
name: etcd-backup-scripts
namespace: etcd-backup
#3、
Pod 停留在 Terminating 状态
kubectl delete pod [$Pod] -n [$namespace] --grace-period=0 --forcePod
从左到右的顺序一次为
分钟 小时 日期 月份 周(一周当中的某天) 执行脚本 参数1 参数2
#设置不可调度
kubectl cordon ****-****.host
#对10.169.24.5上的pod进行驱逐
kubectl drain ****-****.host --ignore-daemonsets --force
##参数说明:
#–delete-local-data: 即使pod使用了emptyDir也删除,数据重要可不加此参数删除数据
#–ignore-daemonsets: 忽略deamonset控制器的pod,如果不忽略,deamonset控制器控制的pod被删除后可能马上又在此节点上启动起来,会成为死循环;
#–force: 不加force参数只会删除该NODE上由ReplicationController, ReplicaSet, DaemonSet,StatefulSet or Job创建的Pod,加了后还会删除’裸奔的pod’(没有绑定到任何replication controller)
#维护完成后,开机后在masert上进行恢复可调度
kubectl uncordon ****-****.host
在网上看到一个很巧妙的方法,可以删除文件的首行、尾行和首尾两行,原理和操作记录如下
利用awk按行遍历,依次执行body的特点, 如下面命令
awk 'NR>1 {print line} {line=$0}' 作用是去掉最后一行。
首轮先输出line(此时为空值,打印空行,所以用 NR>1 跳过此输出),再把首行赋值给line变量,
然后在第二轮输出了line(此时为第一行内容),循环到最后一行时,输出为倒数第二行内容。
最后把最后一行赋值给line,但循环已完,所以最后一行不会输出,即去掉最后一行。
按上面原理
如果想去掉首行,就设置 NR>2
如果想保留最后一行,可以在END输出line即可
原文链接:https://blog.csdn.net/scu_07_bingo/article/details/105860846
删除首行
awk 'NR>2{print line}{line=$0} END{print line}' a.txt
删除尾行
awk 'NR>1{print line}{line=$0}' a.txt
删除首尾两行
awk 'NR>2{print line}{line=$0}' a.txt
python2:
python -m SimpleHTTPServer 9999
python3:
python -m http.server 9999
查看tar.gz压缩包的文件
tar -tvf xxx.tar.gz
所有stage环境,除了申请网络策略工单
还需要在10.169.27.1上的/opt/shell/kube-ovn/tool/下的yaml文件中添加【源地址/32】,然后kubectl apply -f xxx.yaml
排除空行和#开头
grep -vE '^#|^$' /etc/gitlab/gitlab.rb
egrep -v '^$|#' /etc/gitlab/gitlab.rb
查询本机IP:
ip a |grep 'bond0'|grep 'inet'|awk -F ' ' '{print $2}'|awk -F '/' '{print $1}'
cat /etc/sysconfig/network-scripts/ifcfg-bond0 |grep 'IPADDR='|awk -F '=' '{print $2}'
不可调度nodes:
kubectl cordon nodename
取消不可调度nodes
kubectl uncordon nodename
node是否被驱逐查看
kubectl describe node nodename
docker run -it python-algorithm:3.6.2-v1 bash
kubectl get node -o wide --show-labels| awk -F ' ' '{print $1,$6,$14}'|grep 'kubernetes.io/switch-card='
删除node中的某个标签[key+'-']
kubectl label node nodename kubernetes_io_switch_card-
增加标签
kubectl label node nodename kubernetes.io/switch-card=2
coredns:
kubectl get cm -n kube-system | grep coredns
备份:
kubectl get cm coredns -n kube-system -o yaml > /tmp/coredns20221025.yaml
kubectl get cm corednsdaemon -n kube-system -o yaml > /tmp/corednsdaemon20221025.yaml
编辑:找到****cloud.test:53下添加对应域名(注意格式)
configmap cm
kubectl edit cm coredns -n kube-system
kubectl edit cm corednsdaemon -n kube-system
验证:
kubectl get pod -n kube-system | grep coredns | head -n 10
kubectl logs coredns-6748dbbcc-wdqjv -n kube-system | grep reload
停止pod
kubectl get pod -o wide -n kube-system
kubectl scale --replicas=0 deployment/[deployment] -n [namespace]
kubectl get deployment -n namespace
kubectl delete deployment coredns -n kube-system
防火墙操作
# 1.查看OUTPUT详情
IPTABLES -L OUTPUT -N --LINE-NUMBER
# 2.新增OUTPUT规则,拒绝访问目标端口8051 3260
IPTABLES -A OUTPUT -P TCP --DPORT 8051 -J DROP
IPTABLES -A OUTPUT -P TCP --DPORT 3260 -J DROP
# 3.新增OUTPUT规则,拒绝访问目标端口 11995:11999 3260
IPTABLES -A OUTPUT -P TCP --DPORT 11995:11999 -J DROP
IPTABLES -A OUTPUT -P TCP --DPORT 2049 -J DROP
IPTABLES -A OUTPUT -P TCP --DPORT 111 -J DROP
# 删除OUTPUT规则
IPTABLES -D OUTPUT 序号
stage独立网络策略变更
stage独立网络策略变更
1、登陆主机10.169.27.1
2、进入/opt/shell/kube-ovn/tool/
3、打开文件ovn-default-1.8.0.yaml 编辑增加IP
查看组件状态
kubectl get cs
查看环境信息
kubectl cluster-info
查看 Node
kubectl get nodes -o wide
查看集群配置
kubectl -n kube-system get cm kubeadm-config -oyaml
运行容器
kubectl run nginx --image=nginx --replicas=2 --port=80
暴露服务
kubectl expose deployment nginx --port=80 --type=LoadBalancer
查看命名空间
kubectl get namespace
创建命名空间
apiVersion: v
kind: Namespace
metadata:
name: development
查看容器
kubectl get pods -o wide
kubectl get deployment -o wide
查看服务
kubectl get service -o wide
查看详情
kubectl describe pod <Pod Name>
kubectl describe deployment <Deployment Name>
kubectl describe service <Service Name>
查看日志
kubectl logs -f <Pod Name>
删除容器和服务
kubectl delete deployment <Deployment Name>
kubectl delete service <Service Name>
配置方式运行
kubectl create -f <YAML>
kubectl create namesapce nginx deploy nginx --image=harborxy.****cloud.test/artifact/nginx
配置方式删除
kubectl delete -f <YAML>
查看配置
kubeadm config view
kubectl config view
查看 Ingress
kubectl get ingress
查看持久卷
kubectl get pv
查看持久卷消费者
kubectl get pvc
查看 ConfigMap
kubectl get cm <ConfigMap Name>
修改 ConfigMap
kubectl edit cm <ConfigMap Name>
# 临时
$ swapoff -a
# 永久关闭
$ sed -ri 's/.*swap.*/#&/' /etc/fstab
根据 yaml 创建资源, apply 可以重复执行,create 不行
kubectl create -f pod.yaml
kubectl apply -f pod.yaml
Master 也当作 Node 使用
kubectl taint node --all node-role.kubernetes.io/master-
将运行在节点xxx上运行的pod平滑的赶到其他节点上
kubectl drain --ignore-daemonsets --delete-emptydir-data --force
ansible 使用方法
ansible xsky -i hosts -m shell -a 'iscsiadm -m session -R' -u ops --become -k -K
ansible cpuinfo -i hosts -m shell -a "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" -u ops --become -k -K
ansible cpuinfo -i hosts -m shell -a "ansible cpuinfo -i hosts -m shell -a "cpupower frequency-set -g performance" -u ops --become -k -K" -u ops --become -k -K
ansible xsky -i hosts -m shell -a '/usr/sbin/lspci -nnn | grep -i 9005:028d | wc -l ' -u ops --become -k -K
ansible needre -i hosts -m shell -a 'rpm -qa |grep -E "****-aacraid-4.14.134|kmod-aacraid-RHEL7.4-1.2" ' -u ops --become -k -K |less
kubectl get pvc -A |grep -v Bound |wc -l
kubectl get pod -A |grep -v Running
查看calico是否正常运行
calicoctl get ippools -o wide
calicoctl node status
ETCD各节点状态查看
ETCDCTL_API=3 etcdctl endpoint status
进入容器
docker ps |grep 容器
docker inspect 容器号
nsenter -t Pid号 -m -n -u -i
影响需要发起itsm流程的个别业务(自助删除服务流程、跨机房迁移流程)
查看ingress
kubectl get ingress -A |grep 域名
kubectl describe -n namespace 域名 -o yaml
证书时间查看
kubeadm alpha certs check-expiration
etcdctl --endpoints http://127.0.0.1:2379 make-mirror http://10.99.75.167:2379
etcdctl --endpoints http://127.0.0.1:2379 make-mirror http://10.99.75.165:2379
etcdctl --endpoints http://10.99.75.165:2379 get --prefix /
/test