包含标签 k8s 中的文章

开发 k8s 管理平台 - k8sailor 13. 使用 k8s informer 订阅集群事件

开发 k8s 管理平台 - k8sailor 13. 使用 k8s informer 订阅集群事件 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/13-k8s-informer/ tag: https://github.com/tangx/k8sailor/tree/feat/13-k8s-informer 从应用层面来说, 创建 informer 并启动之后就与 k8s cluster 创建了一个长链接并订阅了 某个资源 Resource 的变化。 至于订阅后得到的数据要怎么用完全取决于订阅者的业务设计。 Shared Informer Factory 共享机制 Informer 又称为 Shared Informer,表明是可以共享使用的,在使用 client-go 写代码时,若同……

阅读全文

开发 k8s 管理平台 - k8sailor 14. 一些前后端代码优化

开发 k8s 管理平台 - k8sailor 14. 一些前后端代码优化 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/14-some-optimize/ tag: https://github.com/tangx/k8sailor/tree/feat/14-some-optimize 将 LabelSelector 转换为 Selector client-go 提供了一个方法, 可以将 Resource 中的 LabelSelector 转换为 Selector, 并且 Selector 结构提供了一些常用的方法。 如 String 1 2 3 4 5 6 7 8 9 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func() { selector, _ := metav1.LabelSelectorAsSelector(dep.Spec.Selector) x := selector.String() fmt.Println(x) }() 因此在使用 GetXXXByLabels 时, api 层 可以考虑 接收 map[string]string 类型的参数。 而在 biz 层应该将 不同类型 的参数 统一 转换为格式……

阅读全文

开发 k8s 管理平台 - k8sailor 15. 根据名字删除 deployment 和 pod

开发 k8s 管理平台 - k8sailor 15. 根据名字删除 deployment 和 pod 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/15-delete-deployment-and-pod-by-name/ tag: https://github.com/tangx/k8sailor/tree/feat/15-delete-deployment-and-pod-by-name 调用 k8s api 没什么好说的。 k8sdao 1 2 3 4 5 func DeleteDeploymentByName(ctx context.Context, namespace string, name string) error { opts := metav1.DeleteOptions{} return clientset.AppsV1().Deployments(namespace).Delete(ctx, name, opts) } biz 1 2 3 4 5 6 7 8 9 10 11 12 13 14 type DeleteDeploymentByNameInput struct { Name string `uri:"name"` Namespace string `query:"namespace"` } // DeleteDeploymentByName 根据名字删除 deployment func DeleteDeploymentByName(ctx context.Context, input DeleteDeploymentByNameInput) error { err := k8sdao.DeleteDeploymentByName(ctx, input.Namespace, input.Name) if err != nil { return fmt.Errorf("k8s internal error: %w", err) } return nil } api 1 2 3 4 5 6 7 8 9 10 11 12 13 14 func handlerDeleteDeploymentByName(c……

阅读全文

开发 k8s 管理平台 - k8sailor 16. 创建 Deployment

开发 k8s 管理平台 - k8sailor 16. 创建 Deployment 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/16-create-deployment/ tag: https://github.com/tangx/k8sailor/tree/feat/16-create-deployment 使用 kubectl 命令创建如下 1 kubectl create deployment my-nginx-5 --image=nginx:alpine --replicas=3 --port=80 创建成功后查看结果, 大部分参数为默认参数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # kgd -o yaml my-nginx-5 apiVersion: apps/v1 kind: Deployment metadata: labels: app: my-nginx-5 # 根据 deployment 自动匹配名字自动生成 name: my-nginx-5 # 用户指定 namespace: default # 用户选择,默认为当前 namespace spec: progressDeadlineSeconds: 600 # 默认……

阅读全文

开发 k8s 管理平台 - k8sailor 17. Pod 的阶段(phase)与状态(status)

开发 k8s 管理平台 - k8sailor 17. Pod 的阶段(phase)与状态(status) 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/17-pod-phase-and-status/ Pod 的生命周期 https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/ Pod 的 Status 不是 Phase。 Pod 的 Status 需要根据 Pod 中的 ContainerStatuses 进行计算得到。 Phase 阶段 描述 Pending(悬决) Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜……

阅读全文

开发 k8s 管理平台 - k8sailor 19. 为 Deployment 创建 Service

开发 k8s 管理平台 - k8sailor 19. 为 Deployment 创建 Service 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/19-create-service/ tag: https://github.com/tangx/k8sailor/tree/feat/19-create-service https://kubernetes.io/zh/docs/concepts/services-networking/service/#externalname 1 2 3 kubectl create service clusterip nginx-web --clusterip="port:targetPort" kubectl create service clusterip nginx-web --clusterip="8082:80" kubectl create service nodeport nginx-web --clusterip="8081:80" 需要注意, 使用 kubectl get service 查看到的 Ports 的展示结果为 port:nodePort, 而 targetPort 不展示。 1 2 3 # kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE demo-nginx-nodeport-3 NodePort 10.43.181.29 <none> 80:32425/TCP 4s port, targetPort, nodePort 端口映射中的四个 比较关键 的要素: name: 避免端口相同时,默认名字冲突 port:……

阅读全文

开发 k8s 管理平台 - k8sailor 20. 为 Deployment 创建 Ingress

开发 k8s 管理平台 - k8sailor 20. 为 Deployment 创建 Ingress 原文地址: https://tangx.in/posts/books/k8sailor/chapter02/01-install-k3s-cluster/ tag: https://github.com/tangx/k8sailor/tree/feat/20-create-ingress k8s ingress https://kubernetes.io/zh/docs/concepts/services-networking/ingress/ 1 2 3 4 # Create an ingress with a default backend kubectl create ingress ingdefault --class=default \ --default-backend=defaultsvc:http \ --rule="foo.com/*=svc:8080,tls=secret1" --dry-run -o yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: creationTimestamp: null name: ingdefault spec: defaultBackend: service: name: defaultsvc port: name: http ingressClassName: default rules: - host: foo.com http: paths: - backend: service: name: svc port: number: 8080 path: / pathType: Prefix # 匹配方式 tls: - hosts: - foo.com secretName: secret1 status: loadBalancer: {} 路径类型 Ingress 中的每个……

阅读全文

K8S 中被挂载的 Configmap 发生了变化容器内部会发生什么

K8S 中被挂载的 Configmap 发生了变化容器内部会发生什么 1. 使用 env 挂载 被挂载的值不会变 1 2 3 4 5 6 7 env: # 定义环境变量 - name: PLAYER_INITIAL_LIVES # 请注意这里和 ConfigMap 中的键名是不一样的 valueFrom: configMapKeyRef: name: game-demo # 这个值来自 ConfigMap key: player_initial_lives # 需要取值的键 使用 volumeMounts 挂载目录 在使用 volumeMounts 挂载的时候, 根据是否有 subpath 参数, 情况也不一样。 2.1 没有 subpath 挂载目录 1 2 3 volumeMounts: - name: config mountPath: "/config/normal-dir/some-path/"……

阅读全文

K8S 使用 TTL 控制器自动清理完成的 job pod

K8S 使用 TTL 控制器自动清理完成的 Job Pod 最近为集群 CI 默认添加了 .spec.ttlSecondsAfterFinished 参数, 以便在 cronjob 和 job 运行完成后自动清理过期 pod 。 但是在 CI 的时候却失败, 报错如下。 1 spec.jobTemplate.spec.ttlSecondsAfterFinished: Forbidden: disabled by feature-gate 核查资料得知, 在 v1.21 之前, 该开关默认是关闭的。 刚好错误集群低于此版本。 Job TTL 控制器 K8S 提供了一个 TTL 控制器, 可以自动在 JOB Complete 或 Failed 之后, 经过一定时间……

阅读全文

5分钟k3s-什么是 K3s? K3s 简介与适用场景介绍

什么是 K3s? K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。 K3s 有以下增强功能: 打包为单个二进制文件。 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 + PostgreSQL 作为存储机制。 封装在简单的启动程序中,通过该启动程序处理很多复杂的 TLS 和选项。 默……

阅读全文

福利派送

  • (免费星球)「运维成长路线」

  • 又拍云免费 CDN

最近文章

分类

标签

其它