K8s 中遇到的错误总结
cannot create resource ERROR: Job failed (system failure): pods is forbidden: User “system:serviceaccount:dev:default” cannot create resource “pods” in API group “” in the namespace “xxx” 权限不够, 可能后面还会跟个clusterrole at scope..., 需要创建一个clusterrolebindind进行授权 上面例子中, system:serviceaccount是什么类型的对象, dev是namespace, default是用户, 而API group是核心组 http error: ResponseCode: 503 loading OpenAPI spec for "v1beta1.metrics.k8s.io" failed with: failed to retrieve openAPI spec, http error: ResponseCode...
K8s DNS 原理与 dnsPolicy 应用场景详解
转自: https://help.aliyun.com/document_detail/188179.html?utm_content=g_1000230851&spm=5176.20966629.toubu.3.f2991ddcpxxvD1#title-b7y-d6a-bcy DNS原理和配置说明本文介绍Kubernetes集群中集群DNS服务原理,并针对不同场景介绍如何进行DNS策略配置。 背景信息K8S集群默认部署了一套DNS服务,通过kube-dns的服务名暴露DNS服务。你可执行以下命令查看kube-dns的服务详情。 1kubectl get svc kube-dns -n kube-system 预期输出: 12NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkube-dns ClusterIP 172.24.0.10 <none> 53/UDP,53/TCP,9153/TCP 27d K8s 部署的...
K8s 之安全认证
摘自:https://blog.csdn.net/hancoder/article/details/118070296 访问控制概述 Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作。 客户端 在Kubernetes集群中,客户端通常有两类: User Account:一般是独立于kubernetes之外的其他服务管理的用户账号。 Service Account:kubernetes管理的账号,用于为Pod中的服务进程在访问Kubernetes时提供身份标识。 认证、授权与准入控制 ApiServer是访问及管理资源对象的唯一入口。任何一个请求访问ApiServer,都要经过下面三个流程: Authentication(认证):身份鉴别,只有正确的账号才能够通过认证 Authorization(授权): 判断用户是否有权限对访问的资源执行特定的动作 Admission Control(准入控制):用于补充授权机制以实现更加精细的访问控制功能。 认证管理...
K8s 在不同或相同 Namespace 下服务间访问
同一个 NamespaceK8s 给每个内部服务提供了一个内部使用的 host,格式为 <servicename>.<namespace>。可以在代码中直接访问 http://<servicename>.<namespace>:<port> 来访问另一个服务。如果是部署到默认 Namespace 下的服务,Namespace 为 default。 不同 Namespace无论是相同还是不同 Namespace,都可以通过以下格式访问: {SERVICE_NAME}.{NAMESPACE_NAME}.svc.cluster.local {SERVICE_NAME}.{NAMESPACE_NAME}(短格式) Namespace 的作用是形成逻辑上的"组",以方便不同组的资源进行隔离使用和管理。 例如:my-service.default.svc.cluster.local 中,default 是命名空间,svc 表示这是...
kubectl 命令行 JSONPath 的使用
转自:https://blog.51cto.com/u_11555417/5521927,参考 JSONPath 支持 | Kubernetes 说明JSONPath 模板由 {} 包起来的 JSONPath 表达式组成。kubectl 使用 JSONPath 表达式来过滤 JSON 对象中的特定字段并格式化输出。除了原始的 JSONPath 模板语法,以下函数和语法也是有效的: 使用双引号将 JSONPath 表达式内的文本引起来。 使用 range、end 运算符来迭代列表。 使用负数索引后退列表。负索引不会"环绕"列表,且只要 -index + listLength >= 0 就有效。 通过kubectl命令行配合jsonpath就能获取过滤到我们关注的信息。 函数 描述 示例 结果 text 纯文本 kind is {.kind} kind is List @ 当前对象 {@} 与输入相同 . or [] 子运算符 {.kind} or ...
K8s 配置 Hosts 的方式
静态配置通过 hostAliases 配置容器内的 Hosts 文件12345hostAliases: - hostnames: - "sss" - "aaa" ip: 127.0.0.1 动态配置通过环境变量在 command 中追加到 /etc/hosts12345678910# 注入环境变量envFrom: - configMapRef: name: sopei-biz-configmap# 读取环境变量并追加到 /etc/hostscommand: ["/bin/sh", "-c"]args: - | echo gateway-orange-sopei.sopei-biz.svc.cluster.local $web_domain >> /etc/hosts node app.js
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 \ ...
kubeconfig 文件详解
在node节点上可以执行kubectl命令吗? 12[root@k8s-node1 ~]# kubectl get nodeThe connection to the server localhost:8080 was refused - did you specify the right host or port? localhost:8080 是 kube-apiserver 非安全端口。在 master 上面可以执行成功其实走的是配置文件,但是在 node 上连接的是本地的非安全端口。 其实还有一个对外端口是6443,这个是kube-apiserver监听的,masterip:6443安全端口 12[root@k8s-master ~]# netstat -tpln | grep 6443tcp6 0 0 :::6443 :::* LISTEN 92617/kube-apiserve 什么叫安全端口,什么叫非安全端口 kube-apiserver两个端口: local...
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...
