- kubectl创建别名
1 | alias k=kubectl |
- tab补全命令
1 | yum install -y bash-completion |
- kubernets运行应用
1 | kubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1 |
- 创建一个服务
1 | #创建一个LoadBalancer服务 |
- 公共配置参数
1 | --log-backtrace-at traceLocation 记录日志每到 file:行号时打印一次stack trace 默认值0 |
- kube-apiserver 启动参数
1 | --admission-control strings 对发送给apiserver的任何请求进行准入控制 配置为一个准入控制器列表 |
Pod 资源文件详细说明
属性名称 | 取值类型 | 是否必需 | 取值说明 |
---|---|---|---|
version | String | yes | v1 |
kind | String | yes | Pod |
metadata | Object | yes | 元数据 |
metadata.name | String | yes | Pod的名称 |
metadata.namespace | String | yes | Pod所属名称空间 |
metadata.labels[] | List | 自定义标签列表 | |
metadata.annotation[] | List | 自定义注解列表 | |
spec | Object | yes | Pod中容器详细定义 |
spec.containers[] | List | yes | Pod中的容器列表 |
spec.containers[].name | String | yes | 容器的名称 |
spec.containers[].image | String | yes | 容器的镜像名称 |
spec.containers[].imagePullPolicy | String | 获取镜像策略 | |
spec.containers[].command[] | List | 容器启动命令列表 | |
spec.containers[].args[] | List | 启动命令参数列表 | |
spec.containers[].workingDir | String | 容器工作目录 | |
spec.containers[].volumeMounts[] | List | 容器存储卷配置 | |
spec.containers[].volumeMounts[].name | String | 共享存储卷名称 | |
spec.containers[].volumeMounts[].mountPath | String | 存储卷容器内挂载绝对路径 | |
spec.containers[].volumeMounts[].readOnly | Boolean | 是否只读模式,默认读写模式 | |
spec.containers[].ports[] | List | 容器暴露的端口号列表 | |
spec.containers[].ports[].name | String | 端口的名称 | |
spec.containers[].ports[].containerPort | Int | 容器需要监听的端口号 | |
spec.containers[].ports[].hostPort | Int | 默认与containerPort一致 | |
spec.containers[].ports[].protocol | String | 端口协议TCP UDP 默认TCP | |
spec.containers[].env[] | List | 容器需要环境变量列表 | |
spec.containers[].env[].name | String | 环境变量的名称 | |
spec.containers[].env[].value | String | 环境变量的值 | |
spec.containers[].resources | Object | 资源限制和资源请求设置 | |
spec.containers[].resources.limits | Object | 资源限制的设置 | |
spec.containers[].resources.limits.cpu | String | CPU限制 单位为core数 | |
spec.containers[].resources.limits.memory | String | 内存限制 单位MiB/GiB | |
spec.containers[].resources.requests | Object | 请求限制的设置 | |
spec.containers[].resources.requests.cpu | String | CPU请求 单位为core数 | |
spec.containers[].resources.requests.memory | String | 内存请求 单位MiB/GiB | |
spec.volumes[] | List | Pod定义共享存储卷列表 | |
spec.volumes[].name | String | 共享存储卷的名称 | |
spec.volumes[].emptyDir | Object | 与Pod同生命周期的临时目录 | |
spec.volumes[].hostPath | Object | Pod所在宿主机的目录 | |
spec.volumes[].hostPath.path | String | Pod所在在主机的目录 | |
spec.volumes[].secret | Object | 挂载预定义secret对象到容器 | |
spec.volumes[].configMap | Object | 挂载预定义configMap对象到容器 | |
spec.volumes[].livenessProbe | Object | 健康检查配置 | |
spec.volumes[].livenessProbe.exec | Object | 使用exec方式 | |
spec.volumes[].livenessProbe.exec.command[] | String | 指定命令或脚本 | |
spec.volumes[].livenessProbe.httpGet | Object | 使用httpGet方式 path prot | |
spec.volumes[].livenessProbe.tcpSocket | Object | 使用tcpSocket方式 | |
spec.volumes[].livenessProbe.initialDelaySeconds | Number | 启动后首次探测时间 单位s | |
spec.volumes[].livenessProbe.timeoutSeconds | Number | 探测超时时间 默认1s | |
spec.volumes[].livenessProbe.periodSeconds | Number | 探测时间间隔 默认10s | |
spec.restartPolicy | String | 重启策略 | |
spec.nodeSelector | Object | Pod调度到包含label的Node key:value格式指定 | |
spec.imagePullSecrets | Object | Pull镜像使用secret | |
spec.hostNetwork | Boolean | 是否使用主机网络模式 |
Pod 资源文件详细说明
属性名称 | 取值类型 | 是否必需 | 取值说明 |
---|---|---|---|
version | String | yes | v1 |
kind | String | yes | Pod |
metadata | Object | yes | 元数据 |
metadata.name | String | yes | Pod的名称 |
metadata.namespace | String | yes | Pod所属名称空间 |
metadata.labels[] | List | 自定义标签列表 | |
metadata.annotation[] | List | 自定义注解列表 | |
spec | Object | yes | Pod中容器详细定义 |
spec.selector[] | List | yes | 选择指定label标签的Pod |
spec.type | String | yes | service的类型默认ClusterIP |
spec.clusterIP | String | 虚拟服务IP地址 | |
spec.sessionAffinity | String | 是否支持session 默认为空 可选ClientIP 同一客户端到同一后端Pod | |
spec.ports[] | List | service需要暴露端口列表 | |
spec.ports[].name | String | 端口名称 | |
spec.ports[].protocol | String | 端口协议 TCP UDP 默认TCP | |
spec.ports[].port | int | 服务监听端口号 | |
spec.ports[].targetPort | int | 需要转发到后端Pod的端口号 | |
spec.ports[].nodePort | int | 当type=NodePort时 映射宿主机端口号 | |
status | object | 当type=LoadBalancer时 设置外部负载均衡器地址 | |
status.loadBalancer | object | 外部负载均衡器 | |
status.loadBalancer.ingress | object | 外部负载均衡器 | |
status.loadBalancer.ingress.ip | string | 外部负载均衡器的IP地址 | |
status.loadBalancer.ingress.hostname | string | 外部负载均衡器的主机名 |
进入容器
1 | kubectl exec -it podname -c containername -n namespace -- shell command |
VOLUME
1 | apiVersion: apps/v1 #注意版本号 |
CONFIGMAP
1 | kubectl create configmap user-config --from-file=./ |
1 | apiVersion: apps/v1 #注意版本号 |
1 | #envFrom |
1 | #configmap热更新 |
1 | #将pod信息注入环境变量 |
1 | #将资源限制信息注入环境变量 |
Pod健康检查
1 | #livenessProbe 检查容器是否存活(running) |
调度器
1 | #公平 |
1 | #节点亲和性 |
1 | #键值运算关系 |
Pod调度
1 | #requiredDuringSchedulingIgnoredDuringExecution 硬策略 |
1 | #亲和性/反亲和性调度策略 |
污点(Taint) 容忍(Toleration)
1 | #Taint |
DaemonSet 每个Node上调度一个Pod
1 | #守护进程 |
Job 批处理调度
1 | #spec.template格式同Pod |
CronJob 基于时间的Job
1 | #spec.schedule 调度必需字段,指定任务运行周期 |
Service 服务
1 | #Cluster默认类型 |
Headless Service
1 | apiVersion: v1 #注意版本号 |
NodePort
1 | apiVersion: v1 #注意版本号 |
LoadBalancer
1 | 实际与NodePort方式一样 |
ExternalName
1 | apiVersion: v1 #注意版本号 |
Ingress
1 | kubectl apply -f /etc/ansible/manifests/ingress/nginx-ingress/nginx-ingress.yaml |
1 | #ingress http |
1 | #https ingress |
1 | #basicauth |
1 | #rewrite |
Secret
1 | #Service Accout |
1 | #Service Accout |
1 | #Opaque |
1 | #secret导入环境变量 |
1 | #创建docker registry |
Volume
1 | #emptyDir |
1 | #hostPath |
PV PVC
1 | PV是集群中的资源 独立于Pod的生命周期 |
1 | #部署PV |
新增Node节点
1 | #安装ansible |
动态PV
1 | #github地址: |
1 | #创建RBAC授权 |
1 | #创建Storageclass类 |
1 | #创建nfs的deployment |
1 | #使用statefulset创建nginx服务动态供给pv |
StatefulSet
1 | #Pod名称:$(statefulset名称)-$(序号) |
集群安全
1 | Authentication |
Resources
1 | Kubernets集群内一些资源一般以其名称字符串来表示,这些字符串一般会在API的URL地址中出现 |
实战 创建一个用户只能管理dev空间
1 | useradd devuser |
Helm
1 | cat helm-rabc-config.yaml |
Prometheus
1 |