Pod资源限制
Pod资源限制容器资源限制:(最大限制,不能超过物理机的最大限制)
resources.limits.cpu
resources.limits.memory
容器使用的最小资源需求:
resources.requests.cpu
resources.requests.memory
CPU单位:可以写m也可以写浮点数,例如0.5=500m,1=1000m
kubernetes会根据Requests的值去查找有足够资源的Node来调度Pod
12345678910111213141516apiVersion: v1kind: Podmetadata: name: pod01 namespace: ckaspec: containers: - name: webpod01 image: azu/nginx-php resources: requests: cpu: 0.25 memory: 64Mi # 加i是按1024为1G limits: cpu: 0.5 memory: 128Mi
Pod生命周期
Pod 状态首先先了解下 Pod 的状态值,我们可以通过 kubectl explain pod.status 命令来了解关于 Pod 状态的一些信息,Pod 的状态定义在 PodStatus 对象中,其中有一个 phase 字段,下面是 phase 的可能取值:
挂起(Pending):Pod 信息已经提交给了集群,但是还没有被调度器调度到合适的节点或者 Pod 里的镜像正在下载
运行中(Running):该 Pod 已经绑定到了一个节点上,Pod 中所有的容器都已被创建。至少有一个容器正在运行,或者正处于启动或重启状态
成功(Succeeded):Pod 中的所有容器都被成功终止,并且不会再重启
失败(Failed):Pod 中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止
未知(Unknown):因为某些原因无法取得 Pod 的状态,通常是因为与 Pod 所在主机通信失败导致的
除此之外,PodStatus 对象中还包含一个 PodCondition 的数组,里面包含的属性有:
lastProbeTime:最后一次探测 P ...
OpenStack集群扩容
旧OpenStack集群
IP
hostname
角色
10.99.2.155
pool1
kola-deploy,controller,neutron,nova,cinder
10.99.2.156
pool2
controller,neutron,nova,cinder
10.99.2.157
pool3
controller,neutron,nova,cinder
新OpenStack集群
IP
hostname
角色
10.99.2.158
pool4
controller,neutron,nova,cinder
10.99.2.159
pool5
nova,cinder
10.99.2.160
pool6
nova,cinder
下载docker123456# 新集群所有主机执行mkdir /data/pkgs -p && cd /data/pkgswget http://10.99.5.6:10080/docker-engine-1.12.6-1.el7.centos.x86_64.rpmyum install - ...
OpenStack操作指令
查看虚机列表1openstack service list
查看卷列表1openstack volume list
查看镜像列表1openstack image list
上传镜像1openstack image create {image-name} --file {path} --disk-format {格式} --container-format bare --public
下载镜像1glance image-download --file {path} {image-ID}
制作实例快照1nova image-create {实例-ID} {快照name}
实例快照制作镜像1cinder upload-to-image {实例快照name} {image-name.qcow2} --force=True --disk-format=qcow2
制作卷快照1openstack volume snaps ...
Loki部署与配置
Loki简介Loki相比EFK/ELK,它不对原始日志进行索引,只对日志的标签进行索引,而日志通过压缩进行存储,通常是文件系统存储,所以其操作成本更低,数量级效率更高
由于Loki的存储都是基于文件系统的,所以它的日志搜索时基于内容即日志行中的文本,所以它的查询支持LogQL,在搜索窗口中通过过滤标签的方式进行搜索和查询
Loki分两部分,Loki是日志引擎部分,Promtail是收集日志端,然后通过Grafana进行展示
Promtail: 代理,负责收集日志并将其发送给 loki
Loki: 日志记录引擎,负责存储日志和处理查询
Grafana: UI 界面
Loki的官方文档1https://grafana.com/docs/loki/latest/installation
从官方文档看,Loki支持源码安装、Docker、Helm、Local、Tanka
Docker-Compose部署本章只用一台服务器部署,如需收集其他节点日志,只需在被收集端部署Promtail Agent即可
Loki配置文件下载路径1ht ...
Containerd安装与部署
Github软件包地址
1https://github.com/containerd/containerd/releases/tag/1.5.0
安装依赖1[root@harbor-server ~]# yum -y install runc
安装container1234567[root@harbor-server ~]# tar zxf containerd-1.5.0-linux-amd64.tar.gz [root@harbor-server ~]# cd bin/[root@harbor-server bin]# lscontainerd containerd-shim containerd-shim-runc-v1 containerd-shim-runc-v2 ctr[root@harbor-server bin]# cd ..[root@harbor-server ~]# cp bin/* /usr/bin/[root@harbor-server ~]# mkdir -p /etc/conta ...
解决Ceph osd负载不均衡
监控告警显示0.70服务器中其中一个osd超过阈值
只有osd-23使用率很高,降低osd-23权重15%;将数据分布到其他osd中;
将reweight值调低一点,将数据重新分配到其他osd中
1ceph osd reweight osd.23 0.85
reweight默认是1.0,此值调整不能大于1.0;
1ceph osd crush reweight osd.{id} {value}
Ceph集群扩容
旧ceph集群
IP
hostname
角色
10.99.2.155
pool1
ceph-deploy,mon,mgr,osd
10.99.2.156
pool2
mon,mgr,osd
10.99.2.157
pool3
mon,mgr,osd
新ceph节点做好yum源,放行防火墙,selinux,ntp
IP
hostname
角色
10.99.2.158
pool4
安装ceph,不需要安装ceph-deploy
10.99.2.159
pool5
安装ceph
10.99.2.160
pool6
安装ceph
需求:需要将新集群中的ceph osd加入旧集群中,集群合二为一并且保证集群中数据同步且一致;
源ceph环境123456789101112131415 [root@pool1 ceph]# ceph -s services: mon: 3 daemons, quorum pool1,pool2,pool3 mgr: pool1(active), standbys: pool2, pool3 osd ...
Shell语言 —— Linux基础三剑客
GrepGrep家族
grep
egrep
fgrep
基础部分常用选项123456789101112131415161718192021-E :开启扩展(Extend)的正则表达式。-i :忽略大小写(ignore case)。-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。-n :显示行号-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。-o :只显示被模式匹配到的字符串。--color :将匹配到的内容以颜色高亮显示。-A n:显示匹配到的字符串所在的行及其后n行,after-B n:显示匹配到的字符串所在的行及其前n行,before-C n:显示匹配到的字符串所在的行及其前后各n行,context
操作演示1234567891011121314151617181920212223242526272829303132# 过滤出包含root的内容[ ...
Shell语言 —— 传递参数
Shell 传递参数我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:**$n。n** 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
示例
123456#!/bin/bashecho "Shell 传递参数实例!";echo "执行的文件名:$0";echo "第一个参数为:$1";echo "第二个参数为:$2";echo "第三个参数为:$3";
为脚本设置可执行权限,并执行脚本,输出结果如下所示:
1234567$ chmod +x test.sh $ ./test.sh 1 2 3Shell 传递参数实例!执行的文件名:./test.sh第一个参数为:1第二个参数为:2第三个参数为:3
另外,还有几个特殊字符用来处理参数:
参数
说明
$#
传递到脚本的参数个数
$*
以一个单字符串显示所有向脚本传递的参数。
$$
脚本运行的当前进程ID号
$!
后台运行的最后一个进程的ID号
$@
与$ ...
