kube-apiserver 的安装、运行及参数说明
kube-apiserver 安装和运行安装(二进制文件或镜像方式)二进制文件下载: 1234# k8s 版本对应:https://github.com/kubernetes/kubernetes/releaseswget https://storage.googleapis.com/kubernetes-release/release/<对应k8s版本>/bin/linux/amd64/kube-apiservermv kube-apiserver /usr/local/bin/chmod +x /usr/local/bin/kube-apiserver 运行API Server 通过 kube-apiserver 二进制文件直接运行,下面的例子指定了 Service 分配的 IP 范围、etcd 的地址和对外提供服务的 IP 地址: 1234567/usr/bin/kube-apiserver \ --service-cluster-ip-range=10.0.2.15/24 \ --etcd-servers=http://10.0.2.8:2379 \ ...
kube-proxy
四层与七层1、四层负载均衡(例如nginx中直接配置stream,如下)1234567891011stream { upstream k3s { least_conn; server 10.0.2.0:6443 max_fails=3 fail_timeout=5s; server 10.0.2.6:6443 max_fails=3 fail_timeout=5s; } server { listen 6443; proxy_pass k3s; }} 0、负载均衡器用 ip+port 接收请求,再直接转发到后端对应服务上 1、四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53; 2、四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号) 3、四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同事的使用) 4、四层的转发效率比七层的高得多,但仅支持tcp...
kubectl 安装与配置
Kubectl 安装参考: https://blog.csdn.net/All_Dream_and_you/article/details/124343080 官方文档 kubectl for linux 操作系统:centos7.5命令行: bash 安装 Kubectl123456789101112131415161718#下载安装包 如果需要指定版本 使用版本号替换 $(curl -L -s https://dl.k8s.io/release/stable.txt) 即可curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"#验证可执行文件#下载校验和curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"...
Kubernetes 安装 ingress-nginx-controller
参考:https://www.cnsre.cn/posts/210902330007 前言Service可能会有很多,如果每个资源都绑定一个 node port的话,主机则需要开放外围的端口进行服务调用,管理上会比较混乱。 比较优雅的方式是通过一个外部的负载均衡器,比如 nginx ,绑定固定的端口比如80,然后根据域名/服务名向后面的Service Ip转发,但是这里对问题在于:当有新服务加入的时候如何修改 Nginx 配置? 手动改或者 Rolling Update Nginx Pod 都是不现实的。 对于这个问题, k8s 给出的七层解决方案是:Ingress ingress-nginxingress nginx 官方网站 ingress nginx 仓库地址 ingress-nginx v1.0 最新版本 v1.0 适用于 Kubernetes 版本 v1.19+ (包括 v1.19 ) Kubernetes-v1.22+ 需要使用 ingress-nginx>=1.0,因为 networking.k8s.io/v1beta 已经移除 直接部署 ingre...
Kustomize 使用教程与最佳实践
Kustomize 现代化使用教程与最佳实践为什么选择 Kustomize?Kustomize 是 Kubernetes 原生的配置管理工具(自 k8s 1.14 起内置于 kubectl)。与 Helm 的模板引擎(Template)不同,Kustomize 采用 Overlay(叠加) 的机制。 无模板(Template-free):不需要学习复杂的模板语法(如 Go Template),直接操作原生的 YAML。 声明式(Declarative):所有的修改都通过 YAML 文件声明,非常适合 GitOps 工作流。 基础与覆盖(Base & Overlay):维护一份基础配置(Base),通过补丁(Overlay)派生出开发、测试、生产等不同环境。 核心概念与目录结构一个符合现代最佳实践的 Kustomize 项目结构如下: 1234567891011121314151617181920212223~/my-project├── base # 【基础层】存放通用的资源定义 ├── app ...
Kubernetes 的 master 节点挂了对整个集群有什么影响
如果 master 节点挂掉,已经在节点上运行起来的 Pod 还是可以继续对外提供服务,但是与调度和管理相关的工作(如动态扩展、部署新的服务、新的 Pod 等)将无法执行。 K8s 集群相关的数据都存储在 etcd 上(部分发行版如 k3s 可存储在 MySQL/PostgreSQL 上),master 本身属于无状态服务,K8s 支持多 master 结构来达到高可用(HA)。
kubectl port-forward
kubectl port-forward 是 Kubernetes 提供的一个命令行工具,它允许你从本地机器转发一个或多个端口到 Kubernetes 集群中的 Pod。这个功能在开发和调试应用程序时非常有用,因为它可以让你直接访问集群中的服务,而不需要通过 Kubernetes 的服务发现和负载均衡机制。 使用 kubectl port-forward 的一些常见场景包括: 快速访问服务:当开发者需要迅速检查集群内部署的服务是否正常运行时,他们可以直接将该服务的端口转发到本地机器来访问。 调试应用:如果开发者需要调试集群内部的应用程序,在该应用程序没有暴露为服务或者没有外部IP时,port-forward 可以提供一个快速的解决方案。 数据库调试:对于涉及数据库的服务,port-forward 允许开发者使用本地数据库客户端工具连接到集群中的数据库 Pod,进行调试和查询操作。 基本语法为: 1kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT TYPE/NAME 是指定的资源类型和名称,例如 ...
subPath 的使用场景及方法
在 Pod 中共享卷以供多方使用是很有用的。VolumeMounts.subPath 属性可用于指定所引用的卷内的子路径,而不是其根路径。 subPath 的两种使用场景: 一个 Pod 中有多个容器时,将不同容器的路径挂载到存储卷的子路径,需要使用 subPath。 Volume 支持将 ConfigMap/Secret 挂载到容器路径,但会覆盖原有文件。使用 subPath 可以只挂载指定的 key,且不覆盖原目录下的其他文件。 一个 Pod 多组容器的情况12345678910111213141516171819202122apiVersion: v1kind: Podmetadata: name: pod-subpath-yuhaohaospec: containers: - name: redis-container image: redis volumeMounts: - mountPath: /var/lib # 容器1的挂载目录 name: subpath-volume ...
使用 NFS 作为 PV 的绑定存储卷
NFSNFS 是 Network File System 的缩写,即网络文件系统。功能是让客户端通过网络访问不同主机上磁盘里的数据,主要用在类Unix系统上实现文件共享的一种方法。 本例演示 CentOS 7 下安装和配置 NFS 的基本步骤。 记得保证所有pod可部署机器都要安装NFS服务端或者NFS客户端,否则出现类似错误:wrong fs type, bad option, bad superblock on 192.168.1.5:/home/shared, missing codepage or helper program, or other error NFS服务的优缺点优点 节省本地存储空间将常用的数据存放在一台服务器可以通过网络访问 简单容易上手 方便部署非常快速,维护十分简单 缺点 局限性容易发生单点故障,及server机宕机了所有客户端都不能访问 在高并发下NFS效率/性能有限 客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用) NFS的数据是明文的,对数据完整性不做验证 多台机器挂载NFS服务...
使用 kubeconfig 或 token 进行用户身份认证
参考:https://jimmysong.io/kubernetes-handbook/guide/auth-with-kubeconfig-or-token.html 在开启了 TLS 的集群中,每当与集群交互的时候少不了的是身份认证,使用 kubeconfig(即证书) 和 token 两种认证方式是最简单也最通用的认证方式,在 dashboard 的登录功能就可以使用这两种登录功能。 下文分两块以示例的方式来讲解两种登陆认证方式: 为 brand 命名空间下的 brand 用户创建 kubeconfig 文件 为集群的管理员(拥有所有命名空间的 admin 权限)创建 token 使用 kubeconfig 方式如何生成kubeconfig文件请参考创建用户认证授权的kubeconfig文件。 注意我们生成的 kubeconfig 文件中没有 token 字段,需要手动添加该字段。 比如我们为 brand namespace 下的 brand 用户生成了名为 brand.kubeconfig 的 kubeconfig 文件,还要再该文件中追加一行 token 的...
