k8s误删pvc状态为Terminating且pv还在恢复方法

有人误删pvc,由于pod还在使用pvc,所以现在的状态为Terminating。 恢复操作: 首先调节pv的回收策略为Retain,pv 的回收策略有三种分别是: Retain:PV的默认回收策略,删除pvc后,挂载卷的数据会保留。可以通过kubectl get pv看到 Recycle:删除卷的内容并使卷可用于再次声明。通过这种方式,持久卷可以被不同的持久卷声明和pod反复使用。但是删除pv以后,挂载卷的数据会被删除掉。 Delete:删除底层存储。 调节pv的回收策略为Retain,如果是Retain则省略此步: kubectl edit pv PVNAME 备份pvc yml kubectl get pvc PVCNAME -o yaml > PVCNAME.yml 停止相关pod,当pod停止后,相关pvc会删除; # 删除pod kubectl -n test scale deploy nginx --replicas=

k8s hostNetwork 网络的 pod 无法解析 service

因为特殊环境使用的 hostnetwork,发现 pod 无法解析 k8s 的 service,通过google一番解决此问题记录在此 将使用hostnetwork的pod增加一个配置 dnsPolicy: ClusterFirstWithHostNet即可 dnsPolicy为ClusterFirst的pod,/etc/resolv.conf 文件中内容和宿主机内容一致。 dnsPolicy为ClusterFirstWithHostNet的pod,/etc/resolv.conf 文件中内容和宿主机内容不一致,使用的是 k8s 集群内的dns搜索域。 K8S官网资料 Pod 的 DNS 策略 DNS 策略可以逐个 Pod 来设定。目前 Kubernetes 支持以下特定 Pod 的 DNS 策略。 这些策略可以在 Pod 规约中的 dnsPolicy 字段设置: "Default": Pod

k8s停机维护

手动迁移 当需要下线维护某一台node时,可通过如下操作相关命令处理 cordon 标记节点不可调度,后续新的pod不会被调度到此节点,但是该节点上的pod可以正常对外服务; drain 驱逐节点上的pod至其他可调度节点 uncordon 取消不可调度 # 标记节点不可调度 kubectl cordon node1 # 查看节点状态 kubectl get node NAME STATUS ROLES AGE VERSION node1 Ready,SchedulingDisabled master 1d v1.22.0 # 驱逐pod kubectl drain node1 --delete-local-data --ignore-daemonsets --force # 参数如下: # --delete-local-data 删除本地数据,即使emptyDir也将删除; # --ignore-daemonsets 忽略DeamonSet,否则DeamonSet被删除后,仍会自动重建; # --force 不加force参数只会删除该node节点上的ReplicationController, ReplicaSet,

go 打包优化

最近用go写了一些小工具,打包后发现文件比较大,在网上找了一些减少体积的办法记录一下 1 使用最新的go版本 2 使用的打包命令 # -s: 去掉符号信息。 # -w: 去掉DWARF调试信息。 go build -ldflags="-s -w" main.go 3 upx压缩文件,自动使用多种算法尝试压缩 (压缩后可能会导致无法执行,请自行测试) # 压缩级别 压缩算法都可以指定相关参数 # upx更多复杂用法可以参照upx命令帮助或官网 upx.exe -9 --brute .\main.exe

关闭服务器kdump

前言 买一个1GVPS发现内存只有800多M,google一番发现是开启kdump的原因,在此记录一下关闭方法,(高配服务器或者生产环境不建议关闭) 关闭kdump root用户操作 service kdump stop chkconfig kdump off 修改grub文件 vim /etc/default/grub crashkernel改为0M GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=

x86架构服务器运行arm的镜像

x86架构服务器运行arm的镜像 注册qemu解释器 wget https://github.com/multiarch/qemu-user-static/releases/download/v5.1.0-2/qemu-aarch64-static.tar.gz tar xf qemu-aarch64-static.tar.gz -C /usr/bin/ # 启动 qemu docker run --rm --privileged multiarch/qemu-user-static:register 测试 docker run --rm -t -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static arm64v8/ubuntu:18.04 uname

mysql快速生成批量测试数据

创建数据库和表 DROP database IF EXISTS `test_yc`; create database `test_yc`; use `test_yc`; set global log_bin_trust_function_creators=1; DROP TABLE IF EXISTS `test_user`; CREATE TABLE `test_user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` varchar(20) NOT NULL DEFAULT '', `status` tinyint(

K8S 映射外部服务 Endpoints / ExternalName

具有 IP 地址的数据库 在本例中,在k8s集群外部部署的mysql 192.168.1.2:3306 第一步是创建服务 apiVersion: v1 kind: Service metadata: name: mysql spec: type: ClusterIP ports: - port: 3306 # Service端口 targetPort: 3306 # pod端口 手动创建一个将从此服务接收流量的 Endpoints 对象。 kind: Endpoints apiVersion: v1 metadata: name: mysql subsets: - addresses: - ip: 192.168.1.2 ports: -

下载服务器Nginx-Fancyindex-Theme样式搭建

安装nginx依赖库 tips:如果已经安装过nginx直接看:二、ngx-fancyindex模块安装 nginx安装首先要安装几个依赖库(gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库) 安装gcc gcc-c++ $ yum install -y gcc gcc-c++ 安装PCRE库 $ cd /usr/local/ $ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz $ tar -zxvf pcre-8.36.tar.gz $ cd pcre-8.36 $ ./configure

uwsgi启动Django项目

安装uwsgi pip install uwsgi 配置 uwsgi.ini [uwsgi] #服务端口 http = :9090 #指定与Nginx通信的方式,不影响uwsgi本身运行。如果配置了需要到nginx中进行相关配置-才能通过nginx访问Django # socket = 127.0.0.1:8001 master = True processes = 4 threads = 2 #python虚拟环境目录绝对路径。如果有的话,home是虚拟环境根目录,PYTHNONHOME是虚拟环境下的bin目录(放置了Python执行文件) #home = /env #PYTHONHOME = /env/bin #django项目目录,与manager.py同级 chdir = /web/data/python_project/opstest wsgi-file = opstest/wsgi.py #服务停止时自动移除unix