k8s集群在 执行kubectl get pods -A命令后发现某个pod一直处于pending状态 。 执行 kubectl describe pod <pod名> -n <pod所在命名空间>后找到pending原因,如下:
kubectl get pods -A
kubectl describe pod <pod名> -n <pod所在命名空间>
nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, that the pod didn't tolerate
提示控制面(即master节点)有污点。
查找节点是否存在污点:
kubectl describe nodes <node-name> |grep Taints
最近在Swift项目实践中,用到了系统的一些权限请求,如定位、相机、相册、日历…..,为了更方便的查询各种权限状态以及使用这些功能,我简单的整理了一些常用的系统权限的状态以及授权。
特别说明:在使用这些功能时,需要在info.plist中添加对应的描述,否则将导致项目崩溃,在添加定位权限描述以及相册权限描述时,需要添加以下描述,否则可能会导致包上传到itunesConnect时找不到包,当然,苹果也会在你包上传之后发邮件提醒你
* Privacy - Photo Library Additions Usage Description* Privacy - Photo Library Usage Description* Privacy - Location When In Use Usage Description* Privacy - Location Always and When In Use Usage Description
import CoreLocationimport ContactsUIimport PhotosUIimport AssetsLibraryimport EventKitUIimport CoreTelephonyimport AVFoundation
//回调处理typealias BWPrivacyAuthorizerCompletionClosure = (_ granted: Bool)->Voidenum BWPrivacyAuthorizerStatus { case notDetermined //尚未授权 case restricted //家长控制 case denied //拒绝 case authorized //已授权}
在一个已经部署好的 Kubernetes 集群中,动态修改 NodePort 的端口范围需要修改 Kubernetes API Server 的启动参数,并重新启动 API Server。具体步骤如下:
NodePort
对于基于 kubeadm 部署的集群,API Server 的配置文件通常位于 /etc/kubernetes/manifests/kube-apiserver.yaml 中。这是一个静态 Pod 配置文件。
/etc/kubernetes/manifests/kube-apiserver.yaml
kubectl
sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
command
args
--service-node-port-range
- --service-node-port-range=1-65535
做了个抓取网页表格数据的功能,师兄推荐了reduce 这个写法,不会,不懂,没接触过,做个笔记。
reduce
reduce 是一个经典的无循环函数,在js,python这些语言中都有相同的函数,aardio中 reduce 函数的设计,基本与js的用法规则一样,例如空数组不指定初始值报错,指定初始值不跳过第一个数组成员,不指定初始值跳过第一个数组成员(用第一个数组成员作为初始值),初始值可以是任意对象,这些规则全都一样,参数的位置用法都一样。
基本用法 Function ,结构:
返回值 = reduce(数组,回调函数(结果,当前成员,当前索引),结果初始值)
用法:
返回值 = reduce(要操作的数组 ,function( 结果 /*初始值或上次结果*/ ,数组当前成员,数组当前索引){ 处理函数语句; return 本次结果; // 回调函数的返回值,即为修改结果值:结果 = 本次结果 ,同时在下次回调时传入该值。 }, 结果初始值 // 指定结果初始值:结果= 结果初始值 ) // 【结果】在reduce结束后,会当做 reduce 的【返回值】返回。
删除文件夹使用rd命令,但文件夹多了,难免有点烦,此时简单的批处理就派上大用处了,当然,使用搜索然后全选删除也不失为一种快捷的方法…
@rem for /r %%d in (.) do if exist "%%d\.svn" echo /s /q "%%d\.svn"@for /r %%d in (.) do if exist "%%d\.svn" rd /s /q "%%d\.svn"
把以上命令稍加润色,可以做出一些易用点的批处理.
@ECHO OFF@echo ===================================================================@echo 清除svn,vss,cvs标记文件@echo filename : clearSvnCvsVss.bat@echo ===================================================================@ECHO 按Ctrl + C取消。@pause@echo 执行批处理:%0@echo 转到:%1cd /d %1@echo (1)开始清除“.SVN”文件夹@rem for /r %%d in (.) do if exist "%%d\.svn" echo /s /q "%%d\.svn"@for /r %%d in (.) do if exist "%%d\.svn" rd /s /q "%%d\.svn"@echo 删除完后请检查是否清楚干净。考虑不同的编码工具带有自己的特殊标志,可根据具体情况修改批处理文件中的命令行。pauseexit
开始尝试着解决一些实际问题,在学的过程中,有些知识点和以前理解的不一样,或者以前理解的正则规则就错了。刚好要用到提取网页数据,把aardio的模式匹配入门过了一遍。
要在实践中去掌握知识。 知识是从来不能脱离实践的,例如贪婪匹配,逻辑匹配,你为什么不用学?你碰到了实际的需要,你会想:要是这里能……多好啊? 你一查,还真有呢,你马上就懂了,几乎就是闪电的时间你就明白了,这就是实践中碰撞出来的知识火花。 – 《模式匹配快速入门》
要在实践中去掌握知识。
知识是从来不能脱离实践的,例如贪婪匹配,逻辑匹配,你为什么不用学?你碰到了实际的需要,你会想:要是这里能……多好啊? 你一查,还真有呢,你马上就懂了,几乎就是闪电的时间你就明白了,这就是实践中碰撞出来的知识火花。
– 《模式匹配快速入门》
.
:
*,+
^,&
[]
()
<>
{}
%