
Kubernetes
文章平均质量分 68
Blue summer
这个作者很懒,什么都没留下…
展开
-
K8S Secret管理之SOPS
SOPS (Secret OPerationS) 是一个由 Mozilla 开发的命令行工具,用于加密和解密文件中的敏感数据。SOPS支持使用 AWS KMS、GCP KMS、Azure Key Vault、PGP 加密 YAML、JSON、ENV、INI 以及二进制格式的文件。其主要目标是使敏感信息(例如配置文件、凭证、密钥等)的管理变得简单、安全且可自动化。SOPS 的设计旨在与 Git 等版本控制系统一起使用,允许安全地存储和传输加密文件。原创 2024-05-24 20:15:18 · 610 阅读 · 0 评论 -
K8S Secret管理之SealedSecrets
我们通常将应用程序使用的密码、API密钥保存在K8S Secret中,然后应用去引用。对于这些敏感信息,安全性是至关重要的,而传统的存储方式可能会导致密钥在存储、传输或使用过程中受到威胁,例如在git中明文存储密码或在配置文件中以明文形式存放密码。原创 2024-05-20 19:59:19 · 1015 阅读 · 0 评论 -
K8S的mountPath和subPath
mountPath是容器内部文件系统的挂载点,它定义了容器内部将外部存储卷(如 PersistentVolume、ConfigMap、Secret 等)挂载到哪个路径下。通过 mountPath,容器可以访问这些挂载的数据或配置。原创 2024-03-25 20:10:11 · 3179 阅读 · 0 评论 -
容器args中使用环境变量
有时候需将变量传给容器,作为命令的参数。这时候我们就可以通过ConfigMap来保存这个值,然后在Deployment里读取这个ConfigMap,并设置到环境变量中,供容器使用。然后在deployment中读取这个configmap,并将值设置到环境变量中,这里尤其需要注意的是,引用环境变量是要使用$(GIT_BRANCH),而不是${GIT_BRANCH}。当然也可以直接在Deployment定义这个变量,只是抽离出来会方便点,尤其是变量比较多的时候。原创 2023-11-24 15:35:22 · 656 阅读 · 0 评论 -
helm push文件到ChartMuseum
helm默认是不带push功能的,因此无法直接将本地的chart文件直接上传到ChartMuseum中。原创 2023-06-05 14:41:52 · 493 阅读 · 0 评论 -
K8S node-shell
对于云上K8S node我们一般会禁止ssh登录,但有时又不得不登录到node节点查看和debug,这时就可以通过node-shell的方式获得对应node的root shell。原创 2022-10-13 23:30:42 · 985 阅读 · 0 评论 -
kubectl插件管理器krew
krew是kubectl命令行的插件管理器,可以和yum一样,查找,安装,更新插件,让插件使用起来更方便。原创 2022-10-13 23:29:00 · 788 阅读 · 0 评论 -
K8S删除卡在Terminating状态的namespace
由于一些未知原因,一些namespace在删除时会一直处于Terminating状态,无法彻底删除。原创 2022-10-10 22:12:31 · 1112 阅读 · 0 评论 -
K8S策略引擎Kyverno
Kyverno是专为k8s设计的策略引擎,有以下特性,- policy作为k8s原生资源,不需额外语言支持,面向yaml编程即可- 可以校验,修改或者生成任何资源- 可以审计镜像来源和元数据- 可以使用label和通配符来选择资源- 可以通过admission controls阻止不符合规范的资源,并给出报告信息- 可以在应用到集群前进行测试原创 2022-08-19 19:47:08 · 782 阅读 · 0 评论 -
External-DNS安装与使用
k8s中的服务通过ingress暴露给外部后,我们就能访问该服务。但是此时我们只能基于ingress暴露的ip来访问,这肯定不是个好主意,此时我们就需要将域名绑定到IP上。一般来说这里都需要手动到DNS服务商配置,对于ip变化频繁的话,还是很繁琐的。这时我们就可以考虑使用external-dns服务。原创 2022-05-05 22:30:00 · 1820 阅读 · 0 评论 -
kubeadm重新生成admin.conf
一条指令搞定,kubeadm init phase kubeconfig admin 如果有多个网卡,需要用–apiserver-advertise-address指定apiserver监听地址,证书地址可以用–cert-dir指定,默认/etc/kubernetes/pki,生成的admin.conf默认为/etc/kubernetes/admin.conf...原创 2022-03-28 22:45:20 · 5247 阅读 · 0 评论 -
远程连接K8S集群
远程连接k8s集群原创 2022-03-28 19:59:16 · 4925 阅读 · 3 评论 -
K8S Cilium网络插件——安装
K8S Cilium网络插件——安装原创 2022-01-21 22:49:06 · 2691 阅读 · 0 评论 -
terraform管理本地K8S集群
terraform管理本地K8S集群原创 2021-12-31 16:02:29 · 3276 阅读 · 0 评论 -
Calico网络策略原理
注:本文基于Calico v3.20.1版本编写1 calico支持网络策略的基础calico网络插件中,所有pod的网络设备并没有像flannel一样连接到网桥docker0上,这样每个pod的网络都有独立的链路,而这就是支持网络策略的基础。如果都连接到网桥,那所有pod都互通,并且没有办法做隔离。原创 2021-12-23 22:46:02 · 1344 阅读 · 0 评论 -
Calico网络策略
相比于k8s网络策略,calico网络策略对其进行了扩展,能支持更多的功能,比如可以对流量进行allow, deny, log, pass,而在k8s网络策略中只能对匹配的流量进行allow,而deny只能通过default的方式,灵活度不够。原创 2021-12-18 22:58:58 · 1368 阅读 · 0 评论 -
K8S网络策略
注:本文基于K8S v1.21.2版本编写1 关于网络策略k8s的网络能力主要表现在两个方面,一个是连通性,保证pod之间能够互通,另一个就是隔离性,考虑安全、流量限制等业务需求。而默认情况下,k8s集群的网络没任何限制,集群中的所有pod都是互通的,这对于一些业务来说是不符合安全需求的。同时如果考虑多租户的场景,这就更不能接受了,因此需要有方法能对集群网络进行限制,这就有了Network Policy。但有一点,并不是所有网络插件都支持Network Policy,比如flannel就不支持网络策原创 2021-11-30 22:07:04 · 1840 阅读 · 0 评论 -
K8S调试工具之--kubectl debug
容器调试,kubectl debug,EphemeralContainers,shareProcessNamespace原创 2021-11-22 22:17:47 · 2542 阅读 · 0 评论 -
K8S调试工具之--nsenter
nsenter就是namespace enter的意思,它可以进入到目标程序所在的namespace中,因此可以用来调试容器程序。我们都知道目前存在的几个namespace,比如网络,用户,pid等,nsenter都有对应的参数可以指定,从而进入该namespace原创 2021-10-18 22:25:34 · 2921 阅读 · 0 评论 -
K8S Calico网络插件之BGP模式
注:本文基于K8S v1.21.2版本编写1 切换到BGP模式因为按照官网的配置文件部署calico时,默认使用的是IPIP模式,如果需要使用BGP模式,就要做一些修改。主要有两种方式,修改IPPool中的ipipMode为Never,也就是禁用IPIP模式[root@master home]# kubectl edit ippool ipipMode: Never也可以使用calicoctl或者kubectl命令修改,[root@master home]# kubectl get原创 2021-10-17 17:37:50 · 6184 阅读 · 0 评论 -
K8S Calico网络插件之IPIP模式
注:本文基于K8S v1.21.2版本编写1 关于Calicoflannel是overlay网络, 主要工作在L2(VXLAN),calico主要是L3,通过BGP路由协议在机器之间传送报文。2 安装Calico(IPIP模式)因为之前有安装flannel,因此需要先删除,kubectl delete -f kube-flannel.yml同时需要删除flannel.1和cni0这两个网络设备,ip link delete cni0ip link delete flannel.1之后就原创 2021-10-10 22:58:49 · 4644 阅读 · 0 评论 -
kube-proxy模式之ipvs
注:本文基于K8S v1.21.2版本编写原创 2021-09-26 22:38:38 · 3928 阅读 · 0 评论 -
kube-proxy模式之iptables
注:本文基于K8S v1.21.2版本编写1 默认模式2 关于iptables3 针对一个特定服务分析数据流原创 2021-09-18 22:11:14 · 2202 阅读 · 0 评论 -
K8S dashboard登录超时时间修改
注:本文基于K8S dashboard v2.2.0编写k8s dashboard默认的登录超时时间是900s,也就是15分钟,对于需要频繁查看修改集群信息是非常不便的,需要频繁重新登录。为了增加超时时间,可以修改dashboard启动参数,增加以下配置,即超时时间为1天,- '--token-ttl=86400'直接在dashboard上修改对应的deployment文件即可。...原创 2021-08-24 08:55:37 · 1987 阅读 · 0 评论 -
部署ArgoCD
已通过kubeadm搭建集群环境,直接使用官网的yaml文件原创 2021-08-08 22:43:21 · 1942 阅读 · 0 评论 -
部署k8s dashboard
1 前提已通过kubeadm搭建集群环境,具体可参考——使用kubeadm部署k8s 1.15集群——基于CentOS 72 创建dashboard应用直接使用官网提供的yaml文件,kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml执行成功后,查看创建的pod资源,[root@master ~]# kubectl get pod -原创 2021-07-28 21:55:09 · 1716 阅读 · 0 评论 -
k8s基本概念
Master节点:集群控制节点kube-apiserver:提供rest接口的进程,集群资源增删改查入口,集群控制入口进程kube-controller-manager:资源对象自动化控制中心kube-scheduler:资源(pod)调度进程etcd server:保存集群所有资源对象数据Node节点:集群工作负载节点kubelet:负责pod对应容器的启动、停止等任务,作为m...原创 2019-11-27 22:02:14 · 193 阅读 · 0 评论 -
CentOS 7搭建etcd集群(静态发现)
背景搭建k8s集群之前要先建立etcd集群,因此就先搞一下etcd吧。环境准备集群数量此次使用3台CentOS 7系列机器。 节点名称 节点IP master 192.168.0.100 node1 192.168.0.101 node2 192.168.0.102前提搭建etcd集群时需要将防火墙关闭,否则节点间...原创 2018-07-12 22:07:38 · 2119 阅读 · 2 评论 -
kubernetes新建rc成功却没创建pod
背景通过yaml文件创建rc返回成功,但是pod却没有创建,查询时一直返回No resources found,[root@CentOS-7-4 /home/k8s]# kubectl create -f redis-master-controller.yaml replicationcontroller "redis-master" created[root@CentOS-7-4 /ho...原创 2019-01-17 20:19:44 · 4373 阅读 · 0 评论 -
kubectl get pods一直显示ContainerCreating
注:本文基于CentOS 7.4编写背景根据yaml文件创建rc后,查询pods状态时,一直显示ContainerCreating,[root@CentOS-7-4 /home/k8s]# kubectl get podsNAME READY STATUS RESTARTS AGEredis-master-5zn2z ...原创 2019-01-17 20:22:00 · 5316 阅读 · 0 评论 -
k8s使用本地镜像
背景在机器上使用Dockerfile,打包了自己的镜像,但是没有push到仓库里,想本地直接通过k8s测试一下,但是通过yaml文件创建rc后,一直显示镜像拉取错误。从describe的信息看,k8s一直从远端拉取。[root@CentOS-7-2 /home/k8s]# kubectl describe pod myweb-2959s...... 58s 25s 2 {kubele...原创 2019-01-21 16:57:02 · 49673 阅读 · 21 评论 -
单机版k8s集群搭建及Java Web应用部署
注:本文基于CentOS 7.2编写背景最近在阅读《Kubernetes权威指南》这本书,该书最开始的例子是搭建单机版k8s集群,然后部署一个Java应用。跟着操作的过程中,遇到不少的坑,记录一下,也算是给后面的人提个醒吧。项目介绍该例子就是一个简单的Java Web应用,结构简单,是一个运行在Tomcat里的Web App,JSP页面通过JDBC直接访问MySQL数据库并展示数据。因此就...原创 2019-01-22 11:30:29 · 2805 阅读 · 1 评论 -
flannel实现跨主机容器通信测试
背景在上篇《K8S集群搭建——基于CentOS 7系统》中,我们使用flannel解决跨主机容器的通信,但是并没有实际测试,因此我们动手测试验证一下。测试思路通过在两台机器上各启动一个centos7容器,并进入容器中ping另一个容器的IP,观察是否能通。测试前提在两个node节点上拉取centos 7的镜像,鉴于docker.io过慢,我们使用中科大的镜像仓库拉取,docker pu...原创 2019-05-15 21:59:41 · 690 阅读 · 0 评论 -
flannel通信方式之UDP
flannel通信方式目前比较成熟的flannel网络通信方式有UDP、VXLAN以及host-gw三种方式。flannel的UDP通信方式flannel作为一种overlay网络,而overlay的意思就是数据报文装在另一种网络包里,然后进行路由转发和通信。对于UDP通信方式来说,就是报文在进入实际物理网络之前,经过flannel,进行一层UDP封装,将报文作为payload发送给对端;对...原创 2019-05-22 21:56:54 · 1854 阅读 · 0 评论 -
flannel通信方式之VXLAN
1、设置flannel通信方式默认情况下原创 2019-07-24 11:27:25 · 786 阅读 · 0 评论 -
flannel VXLAN和UDP backend带宽对比测试
背景上回我们说过,由于UDP方式是在用户层做转发,会多一次报文拷贝,因此性能上会比在内核做转发的vxlan差,但是没有具体数据总是不太直观,因此我们小测一波。准备在两个节点上起两个容器,安装上带宽测试工具iperf3,yum install -y iperf3之后分别在vxlan和UDP方式下测试即可。iperf3使用方式iperf3测试采用C/S方式,因此两个节点一个运行服务端,...原创 2019-07-26 19:56:47 · 825 阅读 · 0 评论 -
使用kubeadm部署k8s 1.15集群——基于CentOS 7
背景之前搭建的k8s集群是基于CentOS 7自带yum源,版本老旧,是1.5.2版本,但是目前社区k8s版本已经发布1.15版本了,因此想要了解最新特性和方向还是需要通过二进制部署方式,使用最新版本搭建集群。k8s 1.15版本我们可以通过版本的release notes(https://kubernetes.io/docs/setup/release/notes/)了解一些信息,尤其是一...原创 2019-08-01 13:02:25 · 3475 阅读 · 1 评论 -
k8s集群部署helm组件
背景获取参考1、https://helm.sh/docs/using_helm/#quickstart-guide2、https://helm.sh/docs/using_helm/#role-based-access-control原创 2019-08-20 23:05:36 · 5015 阅读 · 0 评论 -
使用helm部署ingress-nginx
使用helm安装ingress-nginxhelm install stable/nginx-ingress --set controller.hostNetwork=true,rbac.create=true -n nginx-ingress --namespace ingress-nginx安装后查看服务状态,[root@CentOS-7-4 /home/k8s]# kubectl g...原创 2019-09-26 23:58:43 · 6046 阅读 · 0 评论 -
K8S集群搭建——基于CentOS 7系统
环境准备集群数量此次使用3台CentOS 7系列机器,分别为7.3,7.4,7.5节点名称节点IPmaster192.168.0.100node1192.168.0.101node2192.168.0.102主要事项1、master节点安装etcd服务,作为k8s集群主数据库,保存所有资源的信息2、所有节点安装k8s服务,针对master和nod...原创 2019-05-15 20:27:38 · 23741 阅读 · 11 评论