云原生(三十九) | Kubernetes篇之kustomize入门了解

编程之家收集整理的这篇文章主要介绍了云原生(三十九) | Kubernetes篇之kustomize入门了解编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

​kustomize入门了解

一、kustomize是什么

Kubernetes本地的配置管理工具,相当于轻量版的helm。

官网地址:Kustomize - Kubernetes native configuration management

以后我们公司自己部署的一些中间件等,可以封装为 kustomize 管理的文件结构。 只需要kubectl apply -k 即可快速部署不同环境应用

二、用法

1、文件结构

2、文件内容

#service.yaml
kind: Service
apiVersion: v1
Metadata:
  name: the-service
spec:
  selector:
    deployment: hello
  type: ClusterIP
  ports:
  - protocol: TCP
    port: 8666
    targetPort: 8080

#kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
Metadata:
  name: arbitrary
# Example configuration for the webserver
# at https://github.com/monopole/hello
commonLabels:
  app: hello  # 构建出来的每个资源上都有app=hello标签
resources:
- deployment.yaml
- service.yaml
- configMap.yaml

#configMap.yaml
apiVersion: v1
kind: ConfigMap
Metadata:
  name: the-map
data:
  altGreeting: "Good Morning!"
  enableRisky: "false"

#deployment.yaml
apiVersion: apps/v1
kind: Deployment
Metadata:
  name: the-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      deployment: hello
  template:
    Metadata:
      labels:
        deployment: hello
    spec:
      containers:
      - name: the-container
        image: monopole/hello:1
        command: ["/hello",
                  "--port=8080",
                  "--enableRiskyFeature=$(ENABLE_RISKY)"]
        ports:
        - containerPort: 8080
        env:
        - name: ALT_GREETING
          valueFrom:
            configMapKeyRef:
              name: the-map
              key: altGreeting
        - name: ENABLE_RISKY
          valueFrom:
            configMapKeyRef:
              name: the-map
              key: enableRisky

3、使用

kubectl apply -k demo/

4、注意事项

  • kustomization.yaml 文件名是固定的;
  • kubectl apply -k path 会自动找path下的kustomization.yaml

5、高级-环境分离

  • 创建 overlay,分离各个环境。原来的可以抽取为base环境。其他环境层可只定义变量覆盖
  • 每个环境层定义自己的 kustomization.yaml
  • 新的层级结构

#production/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namePrefix: production-
commonLabels:
  variant: production
  org: acmeCorporation
commonAnnotations:
  note: Hello, I am production!
bases:
- ../../base
patchesstrategicmerge:
- deployment.yaml

#production/deployment.yaml
apiVersion: apps/v1
kind: Deployment
Metadata:
  name: the-deployment
spec:
  replicas: 10
## 只需要定义可变部分

#staging/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namePrefix: staging-   #所有资源的前缀
commonLabels:   #所有资源的标签
  variant: staging   
  org: acmeCorporation
commonAnnotations:  #所有资源的注解
  note: Hello, I am staging!
bases:
- ../../base  #基础配置的位置
patchesstrategicmerge:
- map.yaml  #需要额外引入部署的内容,如果引入的内容基础内容有配置,则使用这个最新的

#staging/map.yaml
apiVersion: v1
kind: ConfigMap
Metadata:
  name: the-map
data:
  altGreeting: "Have a pineapple!"
  enableRisky: "true"

  • 执行命令
kubectl apply -k overlays/staging -n hello   #可以在部署的时候统一制定名称空间

kustomzition文件能写的内容

总结

以上是编程之家为你收集整理的云原生(三十九) | Kubernetes篇之kustomize入门了解全部内容。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给好友。

原文地址:https://cloud.tencent.com/developer/article/2144787

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
failed to find plugin “flannel” in path [/opt/cni/bin],k8sNotReady解决方案
2、k8s-master运行的组件查看,控制平面(官网说法)查看构成k8s主节点。查看 k8s集群状态,查看有哪些工作节点此时node机器就可以和master机器 通信 了,走kubelet进程该进程是以什么形式运行的?宿主机直接,以1号进程,systemd去启动的kubelet进程5、k8s-master主节点,查看所有工作节点的信息6、如何让集群就绪呢?部署网络插件确保集群所有节点,就绪状态11、发出pod创建请求,运行一个nginx-pod访问pod-ip即可pod的ip是k
k8s 基础组件总结
Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。类似于:Ubuntu 中的 APTCentOS 中的 YUM主要功能:创建:创建新的charts打包:将charts打包成tgz文件交互:与chart仓库交互安装:安装和卸载K8s的应用管理:管理使用Helm安装的charts的生命周期
这些天我听到越来越多的关于 Kubernetes 发行版的讨论。在高层次上,我知道人们使用这个术语时的意思。但是,当您环顾生态系统时,有时很难弄清楚 Kubernetes 发行版的确切含义,因为它们有多种形式。它不是什么定义 Kubernetes 发行版不是什么很容易:它不是“普通”Kubernetes,意思是您通过从 GitHub 下载 Kubernetes 源代码、编译并自行安装来创建的 Kubernetes安装。几乎没有人会以这种方式安装 Kubernetes,因为这会花费太多的工作。
目录序言1.基本介绍1.1 命令格式介绍2 基础命令2.1 create2.2 delete2.2.1 根据yaml删除资源2.2.1 根据名称删除资源2.3 get2.3.1查看pod列表2.3.2 查看node2.3.3 查看svc2.3.4 查看all2.3.5 查看ns2.3.4 查看deploy2.3 run 2.4 explain2.5 edit3.故障命令3.1 describe3.2 logs3.2.1 查看容器快照3.2.2 查看已停止的容器3.3 exec 2.2 delet