某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 学习建议

  • Docker命令大全
  • Kubernetes教程

    • Kubernetes(K8s)学习教程 - 前言
    • 第1章-Kubernetes集群部署
    • 第2章-便捷性设置以及集群插件的安装
    • 第3章-基础操作
    • 第4章-集群升级
    • 第5章-Pod
    • 第6章-Pod生命周期与资源限制
    • 第7章-Pod与节点
    • 第8章-控制器Deployment
    • 第9章-Deployment镜像变更和滚动更新
    • 第10章-其他控制器-以及标签表达式
    • 第11章-控制器与节点驱逐
    • 暂缓更新
    • 练习题

    • 常用命令及yaml配置

      • 常见的集群配置文件
      • kubectl

        • 还没完善好
        • 综合

          • kubectl get
          • kubectl top
          • kubectl run
          • kubectl create
            • kubectl create
              • 可创建的资源(笔者已学或已知)
              • 控制器deployment
              • 其他控制器
              • 任务Job
              • 周期任务CronJob
              • 密码存储secret
              • --from-literal
              • --from-file
              • --from-env-file
              • 密码存储ConfigMap
              • --from-literal
              • --from-file
              • 角色Role
              • --verb
              • --resource
              • 集群角色ClusterRole
              • 角色绑定RoleBinding
              • --role
              • --clusterrole
              • --user
              • --serviceaccount
              • 集群角色绑定ClusterRoleBinding
              • 服务账户ServiceAccount(SA)
              • 让我们稍微讨论一下RBAC资源(来自第三方)
          • kubectl delete
          • kubectl describe
          • kubectl edit
        • 集群

        • 节点

        • Pod

        • 控制器Deployment

        • 水平自动扩缩HPA

        • 服务(Service)

        • 服务账户(ServiceAccount)

        • 鉴权

        • 证书和证书请求

      • kubeadm

      • ctr

      • etcd(etcdctl)

      • yaml常用配置项

      • 具有特殊作用的标签或注释

  • CKS教程

  • 云原生安全
  • Kubernetes教程
  • 常用命令及yaml配置
  • kubectl
  • 综合
carsaid
2023-11-30
目录

kubectl create

# kubectl create

创建一个集群资源。

# 基本格式
kubectl create <资源类型> <名称> <选项>
1
2

# 可创建的资源(笔者已学或已知)

# 控制器deployment

官方不推荐你通过命令行的方式来创建 Deployment 资源,所以--image是其唯一支持的选项。

# 格式
kubectl create deployment <名称> --image=<镜像>
kubectl create deploy <名称> --image=<镜像>

# 快速生成一个 Deployment 的 yaml 文件
kubectl create deployment <名称> --image <镜像> --dry-run=client -o yaml > test.yaml
1
2
3
4
5
6

# 其他控制器

其他控制器(DaemonSet、RC 和 RS)都无法通过命令行创建,你必须先生成一个 Deployment 的配置文件,然后对其进行编辑。

# 任务Job

# 通过命令行创建 job
kubectl create job <名称> --image <镜像> -- "命令"


# 示例(快速生成 job 的 yaml 配置文件)
kubectl create job job1 --image busybox --dry-run=client -o yaml -- sh -c "echo hello ; sleep 10" > job1.yaml
1
2
3
4
5
6

# 周期任务CronJob

CronJob 的计划任务时间和 Linux 系统的计划任务格式一样:分 时 日 月 周。

# 通过命令行创建 CronJob
kubectl create cronjob <名称> --image <镜像> --schedule="<计划任务时间>" -- <命令>
kubectl create cj <名称> --image <镜像> --schedule="<计划任务时间>" -- <命令>


# 示例(快速生成 CronJob 的 yaml 配置文件)
kubectl create cj job2 --image=busybox --schedule="*/1 * * * *" --dry-run=client -o yaml -- sh -c "echo hello world" > job2.yaml
1
2
3
4
5
6
7

# 密码存储secret

# 格式
kubectl create secret generic <名称> <选项>
1
2

有 4 种创建 Secret 资源的方式:

  • 通过 键值对 创建
  • 将一个文件创建为 secret
  • 通过一个变量文件来创建 secret
  • 通过 yaml 配置文件来创建 secret
# --from-literal

以键值对的形式创建 secret。

可以指定多个--from-literal=选项,基于多个键值对 创建 多个密钥对。

kubectl create secret generic <名称> --from-literal=<键1>=<值1> ...

# 示例(以 abc 作为密钥键,以 123 作为密钥值)
kubectl create secret generic mysec --from-literal=abc=123
1
2
3
4
# --from-file

将一个文件创建为 secret。

可以指定多个--from-file=选项,基于多个文件 创建 多个密钥对。

  • 文件名称作为密钥的 “键”
  • 文件内容作为密钥的 “值”
kubectl create secret generic <名称> --from-file=<文件名1> ...

# 示例(以文件名 hosts 作为键,文件内容作为值)
kubectl create secret generic mysec --from-file=/etc/hosts
1
2
3
4
# --from-env-file

通过一个整合过的变量文件来创建 secret。

和--from-literal选项差不多,也是以键值对的方式来创建密钥。但这次将键值对整合到了一个文件当中,一行一个键值对,逐行识别并创建密钥对。

# 示例
cat <<EOF > test.txt
abc=123
xyz=456
jkl=789
EOF

kubectl create secret generic mysec --from-env-file=test.txt
1
2
3
4
5
6
7
8

# 密码存储ConfigMap

# 格式
kubectl create configmap <名称> <选项>
kubectl create cm <名称> <选项>
1
2
3
# --from-literal

以键值对的形式创建 configmap。

可以指定多个--from-literal=选项,基于多个键值对 创建 多个密钥对。

kubectl create cm <名称> --from-literal=<键1>=<值1> ...

# 示例(以 abc 作为密钥键,以 123 作为密钥值)
kubectl create cm mymap --from-literal=abc=123
1
2
3
4
# --from-file

将一个文件创建为 configmap。

可以指定多个--from-file=选项,基于多个文件 创建 多个密钥对。

  • 文件名称作为密钥的 “键”
  • 文件内容作为密钥的 “值”
kubectl create cm <名称> --from-file=<文件名1> ...

# 示例(以文件名 hosts 作为键,文件内容作为值)
kubectl create cm mymap --from-file=/etc/hosts
1
2
3
4

# 角色Role

注意--resource没有s。

kubectl create role <名称> --verb=<权限> --resource=<资源>

# 快速生成 yaml 配置文件
kubectl create role <名称> --verb=<权限> --resource=<资源> --dry-run=client -o yaml > role.yaml
1
2
3
4
# --verb

为角色分配的权限,多个权限之间通过逗号分隔。

  • patch(修改)权限,例如对 Deployment 的scale或edit操作
kubectl create role <名称> --verb=get,list,watch,create,update,patch,delete
1
# --resource

角色权限作用于哪些集群资源上,多个资源之间通过逗号分隔。注意--resource没有s。

资源的名称和kubectl get <资源名称>时提供的名称一样。

kubectl ... --resource=pods,
1

# 集群角色ClusterRole

和角色 Role 一样。

kubectl create clusterrole <名称> --verb=<权限> --resource=<资源>

kubectl create clusterrole <名称> --verb=<权限> --resource=<资源> --dry-run=client -o yaml > clusterrole.yaml
1
2
3

# 角色绑定RoleBinding

# 将角色授权给一个用户
kubectl create rolebinding <绑定名称> --role=<角色名称> --user=<绑定的目标用户>

# 将角色授权给某个命名空间中的一个 SA(服务账户)
kubectl create rolebinding <绑定名称> --role=<角色名称> --serviceaccount=<命名空间>:<SA名称>

# 普通的角色绑定 可以使用集群角色,但只作用于单个命名空间
kubectl create rolebinding <绑定名称> --clusterrole=<集群角色名称> ......省略

# 快速生成 yaml 配置文件
kubectl create rolebinding <绑定名称> <...选项...> --dry-run=client -o yaml > role1binding.yaml
1
2
3
4
5
6
7
8
9
10
11
# --role

指定要绑定给用户的角色名称,需要提前创建角色。

# --clusterrole

如果你对一个集群角色 应用了 普通的绑定,则只作用于单个命名空间。

# --user

指定受绑定的集群用户,需要提前创建集群用户。

# --serviceaccount

指定受绑定的服务账户,需要提前创建。指定的格式为--serviceaccount=<命名空间>:<SA名称>

# 集群角色绑定ClusterRoleBinding

# 将集群角色授权给一个用户
kubectl create clusterrolebinding <绑定名称> --clusterrolerole=<集群角色名称> --user=<绑定的目标用户>

# 将集群角色授权给一个 SA(服务账户)
kubectl create clusterrolebinding <绑定名称> --clusterrolerole=<集群角色名称> --serviceaccount=<命名空间>:<SA名称>

# 禁止!!!集群角色绑定不能使用普通角色
kubectl create clusterrolebinding <绑定名称> --role=...这是不可能的...

# 生成 yaml 配置文件
kubectl create clusterrolebinding <绑定名称> --clusterrolerole=<集群角色名称> --user=<绑定的目标用户> --dry-run=client -o yaml > role1binding.yaml
1
2
3
4
5
6
7
8
9
10
11

# 服务账户ServiceAccount(SA)

kubectl create sa <名称>
1

一般情况下,当创建一个 SA 之后,会自动为其创建一个格式为<sa名称>-token-<随机字符>的 secret 资源,例如:

kubectl create sa web
kubectl get secrets | grep web      # web-token-000000
1
2

# 让我们稍微讨论一下RBAC资源(来自第三方)

ClusterRole|Role 定义了一组权限及其可用范围,是在整个集群中 还是 仅在单个命名空间中。

ClusterRoleBinding|RoleBinding 将一组权限与帐户连接起来,并定义应用权限的位置,是在整个群集中还是仅在单个命名空间中。

因此,有 4 种不同的 RBAC 组合和 3 种有效的组合:

  1. Role + RoleBinding(可在单个空间中使用,在单个命名空间中应用)
  2. ClusterRole + ClusterRoleBinding(群集范围内可用,群集范围内应用)
  3. ClusterRole + RoleBinding(群集范围内可用,应用于单个命名空间)
  4. Role + ClusterRoleBinding(不可能:在单个命名空间中可用,在群集范围内应用)
编辑 (opens new window)
kubectl run
kubectl delete

← kubectl run kubectl delete→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式