Service介绍及使用案例
service1、Service资源定义root@VM-26-198-ubuntu:/usr/local/src/study# cat service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
kubernetes.io/name: CoreDNS name: kubernetes
namespace: test
spec:
ports: # Service 端口配置
- name: dns # Service 端口名字
port: 53 # Service 端口
protocol: UDP # 代理协议
targetPort: 53 # 目标端口,程序端口
- name: dns-tcp
port: 53
protocol: TCP
targetPort: 53
selector: # 代理到哪些 Pod
k8s-app: kube-dns ...
Pod探针、钩子
Pod常用操作1、更改pod启动命令和参数# vim nginx.yaml
apiVersion: v1 # 必选,API 的版本号
kind: Pod # 必选,类型 Pod
metadata: # 必选,元数据
name: nginx # 必选,符合 RFC 1035 规范的 Pod 名称
spec: # 必选,用于定义 Pod 的详细信息
containers: # 必选,容器列表
- name: nginx # 必选,符合 RFC 1035 规范的容器名称
image: registry.cn-beijing.aliyuncs.com/dotbalo/nginx:stable # 必选,容器所用的镜像的地址
command: # 可选,容器启动执行的命令
- sleep
- "600"
ports: # 可选,容器需要暴露的端口号列表
- containerPort: 80 # 端口号
2、分配CPU和内存root@VM-26-198-ubuntu:/usr/local/src/study# cat pod.yaml ...
Jenkins用户权限控制插件——Role-based Authorization Strategy
看了下公司的jenkins权限配置,发现公司用的是Role-based AuthorizationStrategy插件做的权限控制(之前公司一直用的是安全矩阵的方式控制的) 这里就大概记录一下吧
使用Role-based Authorization Strategy这个插件需要在jenkins插件里搜索并下载下载成功后重启jenkins,发现在jenkins管理中会多出一个Manage and Assign Roles,如下图:
点进去可以分别管理角色和给用户分配角色:
我们首先看下Manage Roles:
这里包括几个选项,Global roles :这个选项是添加一个角色,该角色对项目可以有哪些权限,一般会给开放分配build,cancel等权限,每个公司不太一样Project roles:这个选项就是添加一个可以对哪些job进行操作的角色权限,Role是角色名,会在Assign Roles里展示的,Pattern是匹配项目,比如你的项目名是dys-web-prod,那么这里就要写dys-web-.*进行匹配(我个人测试的结果是这样的)Slave roles:这个公司 ...
Pod异常状态排错
一、常用命令首先列出Pod排查过程中我这边的常用命令:
查看Pod状态:kubectl get pod podname -o wide
查看Pod的yaml配置:kubectl get pods podname -o yaml
查看pod事件:kubectl describe pods podname
查看容器日志:kubectl logs podsname -c container-name
二、Pod状态
Error:Pod 启动过程中发生错误
NodeLost : Pod 所在节点失联
Unkown : Pod 所在节点失联或其它未知异常
Waiting : Pod 等待启动
Pending : Pod 等待被调度
ContainerCreating : Pod 容器正在被创建
Terminating : Pod 正在被销毁
CrashLoopBackOff : 容器退出,kubelet 正在将它重启
InvalidImageName : 无法解析镜像名称
ImageInspectError : 无法校验镜像
ErrImageNeverPull : 策略禁止拉取镜像
I ...
防止内存碎片化
在长时间运行的Linux操作系统中,系统日志有时会出现无法分配高阶内存的报错信息:
Aug 4 22:58:15 server1 kernel: : [69229257.683658] xenwatch: page allocation failure. order:4, mode:0xd0
Aug 4 22:58:15 server1 kernel: : [69229257.683665] Pid: 168, comm: xenwatch Tainted: GF --------------- 2.6.32-358.23.2.el5.x86_64 #1
Aug 4 22:58:15 server1 kernel: : [69229257.683672] Call Trace:
Aug 4 22:58:15 server1 kernel: : [69229257.683688] [<ffffffff8112723a>] ? __alloc_pages_nodemask+0x67a/0x8c0
Aug 4 22:58:15 ser ...
基于centos7的Openssh版本升级
一、环境准备
yum -y install wget tar gcc make
二、上传升级的软件包
zlib-1.2.11.tar.gz,openssl-1.1.1d .tar.gz,openssh-9.0p1.tar.gz 下载地址:
zlib:官网http://www.zlib.net/ wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gzopenssl:wget https://www.openssl.org/source/openssl-1.1.1d.tar.gzopenssh:https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/
上传到服务器并解压三、安装libz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
四、安装openssl
cd openssl-1.1.1d
./config ...
使用阿里云oss静态页面部署服务
一、使用阿里云OSS静态页面部署公司服务场景:因公司新业务需要将项目部署在阿里云oss上,并配置域名解析
创建bucket桶注意:读写权限选择公共读
将bucket上传到bucket中
配置静态页面
如果不配置静态页面会无法访问,注意要添加默认404规则,如果不添加则会报下面的错误:
添加域名解析
查看oss外网访问域名,在域名解析界面将二级域名指向oss的外网域名,如果公司有内网dns则需要在内网dns中也添加相关记录
kubernetesHPA使用及测试
一、安装metrics serverMetrics Server是Kubernetes内置的容器资源指标来源。Metrics Server从node节点上的Kubelet收集资源指标,并通过Metrics API在 Kubernetes apiserver中公开指标数据,以供Horizontal Pod Autoscaler和Vertical Pod Autoscaler使用,也可以通过访问kubectl top node/pod查看指标数据。使用Metrics-Server监控node和pod计算资源使用情况,并提供给第三方使用下载地址:gituhub地址修改资源定义文件
root@master:~/.kube# vim components.yaml
修改镜像位置:
image: k8s.gcr.io/metrics-server/metrics-server:v0.6.1
修改为:
registry.cn-hangzhou.aliyuncs.com/liangxiaohui/metrics-server:0.6.1
部署 ...
kubernetes常用资源——job/cronjob
k8s-job/cronjob1、job(初始化数据库等操作,只执行一次)
[root@haproxy1 case2-job]# cat 1.job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-mysql-init
namespace: test
spec:
template:
spec:
containers:
- name: job-mysql-init-container
image: centos:7.9.2009
command: ["/bin/sh"]
args: ["-c", "echo data init job at `date +%Y-%m-%d_%H-%M-%S` >> /cache/data.log"]
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
...
kubernetes常用资源——Volume存储卷
Volume存储卷
Volume将容器中的指定数据和容器解耦,并将数据存储到指定的位置,不同的存储卷功能不一致,如果是基于网络存储的存储卷可以实现容器间的数据共享和持久化。
静态存储卷需要在使用前手动创建pv和pvc,然后绑定至pod使用
常用的几种卷:
emptyDir:本地临时卷
hostPath:本地存储卷
configmap:配置文件
Secret:是一种包含少量敏感信息例如密码、令牌或密钥的对象
nfs等网络存储卷
https://kubernetes.io/zh/docs/concepts/storage/volumes/
一、emptyDiremptyDir:本地临时卷,pod删除卷也跟着删除,通常用于两个pod之间日志共享
当pod被分配给节点时,首先创建emptydir卷,并且只要该Pod在该节点上运行,该卷就会存在,正如卷的名字所述,它最初是空的,Pod中的容器可以读取和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每个容器中的相同或不同路径上,当出于任何原因从节点中删除pod时,emptyDir中的数据将被永久删除。
/var/ ...