k8s
阿白,
云原生 devops istio Go 大四ing
展开
-
kubernetes的DevOps业务(三):Jenkins,GitLab,Harbor,Tekton,GitOps
Tekton 安装完成后,我们还可以选择是否安装 CLI 工具,有时候可能 Tekton 提供的命令行工具比 kubectl 管理这些资源更加方便,当然这并不是强制的tekton将全部用到的组建的相关内容都放在github官网上了https://github.com/tektoncd安装完成后可以通过如下命令验证 CLI 是否安装成功:此外,还可以安装一个 Tekton 提供的一个 Dashboard,我们可以通过 Dashboard 查看 Tekton 整个任务的构建过程,直接执行下面的命令直接安装原创 2022-06-04 16:08:30 · 323 阅读 · 1 评论 -
kubeadm,kubevip,containerd部署高可用的kubernetes集群
文章目录环境准备安装 Containerd负载均衡器(kube-vip)初始化控制平面添加control plane node添加work node测试高可用Dashboard重新配置前提单 master 的集群对于生产环境风险太大了,非常有必要做一个高可用的集群,这里的高可用主要是针对控制面板(master节点)来说的,比如 kube-apiserver、etcd、kube-controller-manager、kube-scheduler 这几个组件,其中 kube-controller-manage原创 2022-05-28 14:27:41 · 1065 阅读 · 2 评论 -
kubernetes部署(containerd版)
文章目录环境准备安装 Containerd使用 kubeadm 部署 Kubernetes添加节点Dashboard清理使用 kubeadm 从头搭建一个使用 containerd 作为容器运行时的 Kubernetes 集群,这里我们安装 v1.22.1 版本。环境准备节点的 hostname 必须使用标准的 DNS 命名,另外千万不用什么默认的 localhost 的 hostname,会导致各种错误出现的。在 Kubernetes 项目里,机器的名字以及一切存储在 Etcd 中的 API原创 2022-05-27 14:34:45 · 2137 阅读 · 0 评论 -
containerd
文章目录容器运行时DockerCRIContainerd架构安装配置使用(contianerd的CLI:ctr)镜像操作拉取镜像列出本地镜像检测本地镜像重新打标签删除镜像将镜像挂载到主机目录将镜像从主机目录上卸载将镜像导出为压缩包从压缩包导入镜像容器操作创建容器列出容器查看容器详细配置删除容器任务命名空间切换容器运行时维护节点切换 containerdcrictl安装用法获取 Pod 列表获取镜像列表获取容器列表在容器中执行命令输出容器日志资源统计CLI 对比镜像相关容器相关Pod 相关日志配置nerdct原创 2022-05-26 22:05:21 · 2116 阅读 · 1 评论 -
kubernetes的DevOps业务(二):Jenkins,GitLab,Harbor,Tekton,GitOps
文章目录Jenkins流水线在 Slave 中构建任务部署 Kubernetes 应用PipelineTekton组件安装Jenkins流水线Jenkins Pipeline要实现在 Jenkins 中的构建(构建任务)工作,可以有多种方式,我们这里采用比较常用的 Pipeline 这种方式。Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。Jenkins Pipeline 有原创 2022-05-23 00:33:59 · 1510 阅读 · 0 评论 -
kubernetes的DevOps业务(一):Jenkins,GitLab,Harbor,Tekton,GitOps
文章目录CI/CDJenKins安装插入一个问题解决(没遇到这个问题的直接跳过)架构配置测试GitlabGit部署配置gitgit本地仓库使用对比各个区域文件内容之间的差异git diff对比工作区和暂存区git diff --cached可以比对暂存区和本地仓库的文件差异git commit流程与使用git loggit版本控制系统回退工作区回退(git checkout)暂存区退回到本地文件修改(git reset HEAD)上传至本地仓库回退(git reset --hard)git分支和操作创建删除原创 2022-05-20 00:13:07 · 6301 阅读 · 4 评论 -
kubernetes存储:local,openEBS,rook ceph
文章目录Local 存储(PV)概念hostPathLocal PVstorageClassName指定延迟绑定动作pv的删除流程OpenEBS存储控制平面OpenEBS PV ProvisionerMaya-apiserverMaya Volume ExporterVolume 管理 Sidecars节点磁盘管理器数据平面JivacStorLocal PV(普通情况下使用,网络性较小)安装测试(一般简单的使用就是用OpenEBS的local PV)ceph简介高性能高可用性高可扩展性(分布式的特性)特性丰原创 2022-05-08 13:27:16 · 4417 阅读 · 3 评论 -
kubernetes的原生的常规控制器
控制器¶Kubernetes 控制器会监听资源的 创建/更新/删除 事件,并触发 Reconcile 函数作为响应。整个调整过程被称作 “Reconcile Loop”(调谐循环) 或者 “Sync Loop”(同步循环)。Reconcile 是一个使用资源对象的命名空间和资源对象名称来调用的函数,使得资源对象的实际状态与 资源清单中定义的状态保持一致。调用完成后,Reconcile 会将资源对象的状态更新为当前实际状态。我们可以用下面的一段伪代码来表示这个过程:for { desired := g原创 2022-04-24 22:45:21 · 726 阅读 · 0 评论 -
Pod~全
文章目录kubernetes简介kubernetes架构kube-apiserverkube-controller-managerkube-schedulerkubeletkube-proxykubectl核心资源对象podLabelNamespaceDeploymentService搭建集群资源清单YAML 文件基本语法格式pod原理pod生命周期pod状态重启策略初始化容器Pod HookPod 健康检查(探针)Pod 资源配置pod进阶使用静态 Pod配置文件Downward API环境变量Volum原创 2022-04-24 09:02:07 · 1346 阅读 · 1 评论 -
service mesh:istio全
环境:一个k8s集群,三台centos7,内核3.10,域名解析部署:**下载指定版本:curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.13.2 sh -**或者wget下载:wget https://github.com/istio/istio/releases/download/1.13.2/istio-1.13.2-linux-amd64.tar.gz(无非就是下载下这个tar.gz)(架构一般都是用amd的64位)原创 2022-04-07 21:37:21 · 2359 阅读 · 0 评论 -
selector,nodeselector,node和pod亲和性
selector:selector: matchLables: app: nginxselector: matchExpressions: - key: app operator: In values: - nginx ----------selector: matchExpressions: - key: app operator: Exists:(In,NotIn,Exists,DoesNotExist,Gt,Lt)node原创 2022-03-17 20:14:49 · 600 阅读 · 1 评论 -
使用ingress时记得声明class
1.14版本以上的,1.22一下,最好声明class,否则无效原创 2022-03-15 01:15:02 · 520 阅读 · 1 评论 -
记一个堪比rm -rf /的失误
居然在master上kubeadm reset曹,手贱了,还不保存快照,直接init回来,没有使用相关的文件恢复,集群数据全数据化。<快照>原创 2022-03-09 22:20:26 · 94 阅读 · 0 评论 -
helm的chart包释放出来的release该不该命名
chart包生成release应用时不指定名称就会有个较长随机字符串组成的默认名称,这里有个好处,就是高度的唯一性。如果自己定义名称,release对应的deploy和pod的标签会自动生成一个release=<rekease_name>,这是如果有服务正好是通过这个标签来绑定pod的,就会有问题了,所以不建议自定义release的名称,一定要定义话考虑命名的唯一性。附:release对应的deploy名称就是release_name...原创 2022-03-08 19:30:35 · 433 阅读 · 1 评论 -
externalTrafficPolicy
获取实际客户端地址,可以在yaml中设置externalTrafficPolicy(nginx日志有关)但是观察流量发现,这时候按节点来进行负载而不是pod,负载均衡效果不好,所以可以对pod中/etc/nginx/nginx.conf中使用$http_x_forwarded_for来获取实际客户端地址附:pod是创建好了再调度,pod是逻辑概念,实际上是在调度后的节点上下载镜像创建容器...原创 2022-03-07 21:23:46 · 2216 阅读 · 0 评论 -
api监听
api-server监听资源,其实就是监听资源的http访问方式,所以其中有一种判断前往api-server的请求是否合法的方式就是http认证,也就是验证ca证书。私钥key->证书请求文件csr->kubernetes的ca签名的自签名证书kubernetes一般支持普通用户和sa,其中sa可以有kubernetes直接管理sa的secret挂载到pod中的目录下一般有个ca.crt。...原创 2022-03-04 18:10:07 · 435 阅读 · 0 评论 -
echo -n 与base64编码
echo默认是有换行符的用base64编码时一般用-n去掉换行符原创 2022-03-03 21:00:42 · 1188 阅读 · 0 评论 -
hpa的target为unknown
hpa对应的下层RS或Deployment的pod模板下de1container设置要写上requests和limits的配置,最重要的,控制器不要使用通用标签,着点很容易报错hpa需要metrics server获取的数据来计算,而这些对象间的匹配底层应该就是通过标签来匹配,不是简单的在hpa配置文件中指定控制器就可以(没有深究,记录个坑)hpa其实一般,建议使用别的方案...原创 2022-03-03 13:51:01 · 415 阅读 · 3 评论 -
manifest-url部署静态pod
rpm -ql kubelet:/etc/sysconfig/kubeletsystemctl restart kubelet原创 2022-03-01 11:53:39 · 242 阅读 · 0 评论 -
静态pod设置需要kubelet的配置文件路径
rpm -ql kubelet建议用systenctl status kubelet(部署情况多样,这个看准确点)进入配置文件查看:配置文件部署静态pod,默认kubeadm方式配置文件路径/etc/kubernetes/manifests原创 2022-03-01 10:47:27 · 707 阅读 · 2 评论 -
hpa做的压力测试
可以使用postman软件进行压测,这里使用ab命令更好如:ab -t 60 -c 1000 http://192.168.160.100:30656/usr/share这里的/usr/share是任意一个文件名,现在的ab命令使用要求有文件路径原创 2021-11-23 19:07:43 · 363 阅读 · 0 评论 -
kubectl edit自动记录版本更换和undo的使用细节
记:kubectl edit自带–record=true属性。原创 2021-11-21 21:11:19 · 710 阅读 · 0 评论 -
关于initcontainer容器执行顺序的一定性带来的克数情况记录
假设我要启动一个pod,里边只运行一个容器(pause容器所以基于这里可先忽略),要运行的容器也就是主容器maincontainer,在这个主容器运行之前会先运行inti容器,比如获取某些目录下的某些文件,而系统处于安全性管理不愿意让主容器获取这些目录和相关文件的权限,但又要使用到这些文件,基于initcontainer初始化容器初始化正常后就关闭了,所以让initcontainer有权限去调用这些文件,这样既能调用到要用的文件有能提高安全性。再举个例子,主容器是nginx,运行前要检测nginx服务器原创 2021-11-15 23:06:08 · 2620 阅读 · 0 评论 -
编写kubernetes的command的注意
编写command,注意命令里边的是"/bin/sh",如果写"/bin/bash"会有错原创 2021-11-14 16:01:47 · 673 阅读 · 0 评论 -
初始时创建容器错误,注意尽量不要再次使用kubectl apply
kubectl apply虽说兼并了创建和更新与一身,但是有些场景使用它十分留意如kubectl create -f y.yaml,生成一个pod,但比如由于镜像策略问题创建容器失败,正确修改了yaml文件后,想重新创建,注意了这时候使用apply很容易出错,先delete,再create,才是正确的流程...原创 2021-11-14 15:32:07 · 1187 阅读 · 0 评论 -
kubernetes集群内部网络通讯
原创 2021-11-13 20:48:01 · 587 阅读 · 0 评论 -
命令行模式和yaml创建Pod的区别
命令行创建pod,要通过创建控制起来实现pod的创建如:kubectl run nginx --image=nginx:1.17.1 -n dev --port=80注意这里的nginx是控制器的名称而yaml不同,yaml可以直接创建个pod,即再kind中设置为pod原创 2021-11-13 08:25:58 · 2314 阅读 · 1 评论 -
记录一个错误,master端kubectl显示was refused
master断电后重启,显示上边的错误,然后连同多有node节点重启一次,发现在此1使用kubectl不报错了,问题莫名其妙解决,所以暂时没有深入研究原创 2021-11-12 19:32:46 · 281 阅读 · 0 评论 -
kube-flannel.yml拉去flannel的镜像文件问题
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml下载下来官方这个文件,注意下载时访问这个网站可能有问题,在本专栏中有解决这个问题的文章,日期与本博文相近安装网上的大多数建议将yml文件中的quay,io改成quay-mirror.qiniu.com然后kubectl apply -f kubr-flannel.yml可以通过kubectl get nodes 和原创 2021-11-06 10:50:42 · 1266 阅读 · 0 评论 -
nf_conntrack_ipv4模块安装(解决找不到的错误问题)
安装kubernetes是,主要修改内核参数,要加入nf_conntrack_ipv4,有的教程跟着做会显示找不到nf_conntrack_ipv4,网上有人说因为nf_conntrack_ipv4被nf_conntrack替换了,所以装不了,其实不然,执行那个修改模块的脚本,注意脚本名后缀的是.modules,如/etc/sysconfig/modules/ipvs.modules然后再sysctl -p,请测没有错误...原创 2021-11-04 22:13:46 · 3568 阅读 · 1 评论 -
初始化集群时的错误[ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns/coredns:v1.8.4: output: Error re
这里错误是因为没有下载到这个k8s.gcr.io/coredns/coredns:v1.8.4镜像,同时它去官网又下载不了,这里有个坑,按照别的文章帮你把标签一般会是k8s.gcr.io/coredns:v1.8.4这样,而新版本的要求是k8s.gcr.io/coredns/coredns:v1.8.4,所以解决办法是docker tag改下标签即可,...原创 2021-10-31 00:39:49 · 1978 阅读 · 2 评论 -
yaml编写时踩坑
记录一下今天编写yaml猜的坑,高初始化kubernetes集群是用到kubeadm-config,yaml,编写时用了tab键(四个空格),报错了而且不是包tab键的错误,而是其他不想管行的错误,所以问题没那么直接定位到,价差文件后发现tab的问题,yaml缩进很严格,两个空格为标准,而一个tab键默认缩进四个空格,所以错误如果经常需要编写这种yaml文件,可以在~/vimrc添加一行set tabstop=2修改tab一次缩进两个空格,方便编写yaml文件...原创 2021-10-30 23:47:09 · 1353 阅读 · 0 评论 -
docker login登录阿里云
首先,得去阿里云创建个你的阿里云账号,然后登录阿里云,点控制台,镜像实例,创建个人镜像实例,即可原创 2021-10-30 13:25:23 · 1182 阅读 · 0 评论 -
解决下载kubeadm用来初始化kubenetes集群的阿里云镜像升级中看不到地址的问题
收藏对应的镜像后即可去收藏夹查看原创 2021-10-30 13:10:23 · 121 阅读 · 0 评论 -
linux内核升级版本
操作3.10版本有一些bug对k8运行不稳定,挑剔的话,这里来为k8s部署之前升级内核版本[root@k8s-master01 journald.conf.d]# uname -r3.10.0-1062.el7.x86_64 rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 下载用于更新内核的yum源要检查/boot/grub2/grub.cfg中对应内核menuentry是否包含initrd16原创 2021-10-27 19:19:05 · 402 阅读 · 1 评论 -
k8s集群配置了软路由,其他的master和node节点上不了的问题
这里我的软路由采用国内开源的koolshare实现,刚接触有个问题就是master跟node都ping不上百度,回想起master和node网卡模式设置的都是仅主机模式,于是问题就定位到了koolshare软路由上,发现koolshare机器我关了,开启koolshare即可附:虚拟机的仅主机模式上网有问题,一般上网会设置nat模式(koolshare使用了仅主机和nat两种),非网络方向学生所以能大概定位到问题出在那,但不清楚其中的底层原理...原创 2021-10-26 15:47:25 · 497 阅读 · 0 评论 -
k8s架构中的master和node的ip设置
设置为静态设置ipaddr和koolshare同一个网段如192.168.66.20GATEWAY设置为koolshare的ip地址如192.168.66.1DNS1设置为koolshare的ip地址可以设置两个dns,那么DNS2可以设置为114.114.114.114,这些DNS服务器地址可以百度搜索下附近最近的DNS服务器的ip...原创 2021-10-24 22:38:43 · 768 阅读 · 0 评论 -
虚拟机上的koolshare完整的部署与配置过程记录(已排错)
前言:已经将自己在部署koolshare上踩的坑填上了开始:—————————————————————————————————————————————准备ios文件写入软件这里使用UltraISO下载地址:https://www.onlinedown.net/soft/614.htm准备虚拟pe软件这里使用:老毛桃软件下载地址:https://www.laomaotao.net/down/openwrt-koolshare这里使用:openwrt-koolshare-mod-v2.3原创 2021-10-24 15:14:39 · 5203 阅读 · 1 评论 -
push到harbor的注意事项
先在/etx/docker/daemon.json设置好私有仓库,这里最好设置了端口如登录上这个私有仓库docker login 192.168.160.149:8089(指定端口)在harbor建立一个项目了,叫harbor,这里是它的打标签和推送命令,按这两条命令里作即可上传成功错误问题总结:1.Error response from daemon: Get “https://192.168.160.149/v2/”: dial tcp 192.168.160.149:443: conne原创 2021-10-23 11:10:54 · 2755 阅读 · 0 评论 -
/etc/docker/daemon.json为空时
/etc/docker/daemon.json为空时,即有这个文件但文件为空,重启docker会错误原创 2021-10-22 23:12:06 · 856 阅读 · 0 评论