kubernets知识点

  • kubectl创建别名
1
alias k=kubectl
  • tab补全命令
1
2
yum install -y bash-completion
source <(kubectl completion bash sed s/kubectl/k/g)
  • kubernets运行应用
1
2
3
kubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1
#--image=luksa/kubia 容器运行时所需镜像
#--port=8080 监听8080端口
  • 创建一个服务
1
2
3
4
5
6
#创建一个LoadBalancer服务
kubectl expose pod kubia --type=LoadBalancer --name kubia-http
#查看
kubectl get svc

kubectl scale rc nginx-test --replicas=3
  • 公共配置参数
1
2
3
4
5
6
7
8
9
--log-backtrace-at traceLocation 记录日志每到 file:行号时打印一次stack trace 默认值0
--log-dir string 日志文件路径
--log-flush-frequency duration 设置flush日志文件的时间间隔 默认值5s
--logtostderr 设置为true表示将日志输出到stderr 不输出到日志文件
--alsologtostderr 设置为true表示将日志输出到日志文件同时输出到stderr
--stderrthreshold severity 将threshold级别以上的日志输出到stderr 默认值2
--v Level 配置日志级别
--vmodule moduleSpec 详细日志级别
--version version[=true] 输出其版本号
  • kube-apiserver 启动参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--admission-control strings 对发送给apiserver的任何请求进行准入控制 配置为一个准入控制器列表
AlwaysAdmit 运行所有请求
AlwaysDeny 禁止所有请求
AlwaysPullImages 启动容器之前总是去下载镜像
DefaultStorageClass 实现共享存储动态供应 为未指定StorageClass或PV的PVC匹配默认StorageClass
DefaultTolerationSeconds 设置默认容忍时间 5min
DenyEscalatingExec 拦截 所有exec和attach到具有特权的Pod上的请求
DenyExecOnPrivileged 拦截所有想在privileged container上执行命令的请求
ImagePolicyWebhook 允许后端webhook程序完成admission controller
LimitRanger 配额管理
NamespaceLifecycle 拒绝在不存在namespace中创建资源对象的请求 删除namespace时删除所有对象
PodPreset pod启动时注入应用所需设置
PodSecurityPolicy 对pod进行安全策略控制
ResourceQuota 配额管理
……
--advertise-address ip 广播给集群所有成员自己的IP地址
--allow-privileged 配置为true 运行pod中运行拥有系统特权的容器应用
--anonymous-auth 配置为true表示apiserver接收匿名请求 默认值true
--apiserver-count 集群中运行apiserver数量 默认值1
--authorization-mode 认证模式列表 多个以逗号分隔

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.initalDelaySeconds

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

外部负载均衡器的主机名