一、ConfigMap

 1、使用目录创建

vim game.properties

vim ui.properties

在一个文件夹下创建两个文件,通过以下命令创建

kubectl create configmap game-config --from-file=../configMap/

--from-file:指定一个目录(绝对路径或相对路径都可以),目录下的所有内容都会被创建出来。以键值对的形式

--from-file指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容

查看可以使用以下命令

kubectl get cm

kubectl get cm game-config -o yaml

kubectl describe cm game-config

2、使用文件创建

kubectl create configmap game-config-2 --from-file=docs/user-guide/configmap/kubectl/game.properties

和目录创建差不多,将目录换成了单个文件而已,查询方式一样

3、使用字面值创建

使用文字值创建,利用--from-literal参数传递配置信息,该参数可以使用多次,格式如下

kubectl create configmap configmap名 --from-literal=键名=键值 --from-literal=键名=键值

$ kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

指定键名为special.how  键值为very

 literal:字面意义的

 二、Secret

1、Secret 存在意义

Secret 解决了密码、token、密钥等敏感数据的配置问题

2、Secret 有三种类型

Service Account:用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount目录中

Opaque:base64编码格式的Secret,用来存储密码、密钥等

kubernetes.io/dockerconfigjson:用来存储私有 docker registry 的认证信息

#!/bin/sh -x

表明这个脚本是用sh来解析的,因为各种shell的语法还是有细微差别的,比如其他的shell还有bash

2.-x 是调试用的,加了这个,就会把脚本中的每条命令的执行情况打印出来

以下部分为转载:

我们在前面介绍的调试手段是通过修改shell脚本的源代码,从其输出相关的调试信息来定位错误的,那有没有不修改源代码来调试shell脚本的方法呢?有的,那就是使用shell的执行选项,下面将介绍一些常用选项的用法:

 

只读取shell脚本,但不实际执行

进入跟踪方式,显示所执行的每一条命令

从strings中读取命令

可用于测试shell脚本是否存在语法错误,但不会实际执行命令。在shell脚本编写完成之后,实际执行之前,首先使用"-n"选项来测试脚本是否存在语法错误是一个很好的习惯。因为某些shell脚本在执行时会对系统环境产生影响,比如生成或移动文件等,如果在实际执行才发现语法错误,您不得不手工做一些系统环境的恢复工作才能继续测试这个脚本。

选项使shell解释器从一个字符串中而不是从一个文件中读取并执行shell命令。当需要临时测试一小段脚本的执行结果时,可以使用这个选项,如下所示:

 sh -c 'a=1;b=2;let c=$a+$b;echo "c=$c"'

选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。"-x"选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 "-x"选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。

如果把本文前面所述的trap ‘command’ DEBUG机制与“-x”选项结合起来,我们就可以既输出实际执行的每一条命令,又逐行跟踪相关变量的值,对调试相当有帮助。

 

原文链接:

三、Volume

阿里云时间同步服务器:ntpdate ntp1.aliyun.com

进入pod:kubectl exec -it pod名 -it --/bin/sh

清除污点:kubectl taint node liu-node02 app:NoExecute-

如何进入一个pod:kubectl exec  -it   name-of-pod   bash

k8s yaml mysql连接方式 k8s yaml namespace_shell脚本

这个地方加sleep,只是让这个进程别着急退出,docker管理的是一个常驻前台的进程,busybox单纯这个镜像没有任何进程在前台,所以执行就会退出,所以这里用sleep,改成top命令也可以,这样也不会退出了

 empty

1、一个pod一个容器

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
   containers:
   - image: k8s.gcr.io/test-webserver
     name: test-container
     volumeMounts: 
     - mountPath: /cache
        name: cache-volume
   volumes: 
   - name: cache-volume
     emptyDir: {}

k8s yaml mysql连接方式 k8s yaml namespace_shell脚本_02

 2、一个pod两个容器

apiVersion: v1
kind: Pod
metadata:
  name: v-empty
spec:
  containers:
  - name: nginx
    image: nginx:latest
    volumeMounts:
    - name: empty
      mountPath: /liu
  - name: busybox
    image: busybox
    volumeMounts:
    - name: empty
      mountPath: /qi
    command: ["/bin/sh","-c","sleep 600s"]
  volumes:
  - name: empty
    emptyDir: {}

k8s yaml mysql连接方式 k8s yaml namespace_Pod_03

 hostPath

apiVersion: v1
kind: Pod
metadata:
  name: v-empty
spec:
  containers:
  - name: nginx
    image: nginx:latest
    volumeMounts:
    - name: empty
      mountPath: /liu
  volumes:
  - name: empty
    hostPath:
      path: /liuqi
      type: Directory