Kubernetes数据库Etcd日常运维及技巧
etcd 是基于 raft算法的分布式键值数据库,生来就为集群化而设计的,由于Raft算法在做决策时需要超半数节点的投票,所以etcd集群一般推荐奇数节点,如3、5或者7个节点构成一个集群。
etcd 是基于 raft算法的分布式键值数据库,生来就为集群化而设计的,由于Raft算法在做决策时需要超半数节点的投票,所以etcd集群一般推荐奇数节点,如3、5或者7个节点构成一个集群。
nodeSelector 提供了一种非常简单的方法来将 pod 约束到具有特定标签的节点上。亲和/反亲和功能极大地扩展了你可以表达约束的类型。关键的增强点是
亲和功能包含两种类型的亲和,即
节点亲和就像现有的 nodeSelector(但具有上面列出的前两个好处),然而 pod 间亲和/反亲和约束 pod 标签而不是节点标签(在上面列出的第三项中描述,除了具有上面列出的第一和第二属性)。
在使用 Kubernetes 时,可能会遇到一些网络问题。当通过检查配置与日志无法排查错误时,这时就需要抓取网络数据包,但是Pod内一般不会安装tcpdump
命令,那有没有方法可以直接通过宿主机抓取Pod网络数据包?
当然有,本文介绍 nsenter
命令,能够进入Pod容器 net
命名空间。并且本文提供一个快速进入Pod容器 net
命名空间脚本,方便大家使用。
CrashLoopBackOff
:容器退出,kubelet正在将它重启InvalidImageName
:无法解析镜像名称ImageInspectError
:无法校验镜像ErrImageNeverPull
:策略禁止拉取镜像ImagePullBackOff
:镜像正在重试拉取RegistryUnavailable
:连接不到镜像中心ErrImagePull
:通用的拉取镜像出错CreateContainerConfigError
:不能创建kubelet使用的容器配置CreateContainerError
:创建容器失败m.internalLifecycle.PreStartContainer
:执行hook报错RunContainerError
:启动容器失败PostStartHookError
:执行hook报错ContainersNotInitialized
:容器没有初始化完毕ContainersNotReady
:容器没有准备完毕ContainerCreating
:容器创建中PodInitializing
:pod 初始化中DockerDaemonNotReady
:docker还没有完全启动NetworkPluginNotReady
:网络插件还没有完全启动一、openvpn原理
openvpn通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Publice key,另外一个是Private key)对数据进行加密的。这种方式称为TLS加密。
openvpn使用TLS加密的工作过程是,首先VPN Sevrver端和VPN Client端要有相同的CA证书,双方通过交换证书验证双方的合法性,用于决定是否建立VPN连接。然后使用对方的CA证书,把自己目前使用的数据加密方法加密后发送给对方,由于使用的是对方CA证书加密,所以只有对方CA证书对应的Private key才能解密该数据,这样就保证了此密钥的安全性,并且此密钥是定期改变的,对于窃听者来说,可能还没有破解出此密钥,VPN通信双方可能就已经更换密钥了。
1 | # https://github.com/easzlab/kubeasz/blob/master/docs/setup/quickStart.md |
负载均衡:haproxy lvs nginx,调度算法和具体区别
监控服务zabbix:主被动模式和自定义监控项及模板
web服务器:nginx php tomcat apache,动静分离,location,优化配置,apache三种运行模式的区别,tomcat的java选项
数据库:mysql主从 数据备份恢复 读写分离 双主 结合业务与开发拆库拆表
iptables:源地址,目标地址转换 端口转换 访问禁止等
熟练使用jenkins
nfs等数据共享,实线基于共享存储的动静分离lnmp等web环境
内核参数调优 公有云使用 网络知识 vmware docker 熟练k8s运行各种服务 kvm openstack 熟练shell脚本 微服务,实现业务高并发,稳定性,横向扩容
gitlab+jenkins:结合或python实现代码自动化部署与回滚
elk:各种业务日志收集雨分析,展示,故障定位
熟练python 微服务 自动化 良好的故障定位及排除能力 安全技术 业务流程异步处理 分布式web集群 弹性扩容 业务自治愈 多数据中心业务管理
zookeeper启动时报错,日志提示“Java heap space”
按照网上的办法,应该是需要配置zookeeper的JVM
配置文件在那里呢?请查看文件路径:zookeeper/bin/zkEnv.sh
配置文件路径在zookeeper/conf/java.env,如果java.env该文件不存在,那么就创建该文件
1 | #!/bin/sh |
确保设置一个合理的JVM堆大小,如果设置太大,会让内存与磁盘进行交换,这将使ZK的性能大打折扣。例如一个4G内存的机器的,如果你把JVM的堆大小设置为4G或更大,那么会使频繁发生内存与磁盘空间的交换,通常设置成3G就可以了。当然,为了获得一个最好的堆大小值,在特定的使用场景下进行一些压力测试。
运行zookeeper时,使用jmap -heap ${pid} 命令查看内存情况如下