K8s(Kubernetes)-Tips

K8S中文官网

https://www.kubernetes.org.cn/

Kubernetes集群组件结构

在这里插入图片描述
在这里插入图片描述


一个kubernetes集群主要是由控制节点(master)工作节点(node) 构成,每个节点上都会安装不同的组件。

  • master:集群的控制平面,负责集群的决策 ( 管理 )

  • ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制

  • Scheduler :
    负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上

  • ControllerManager :
    负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等

  • Etcd :负责存储集群中各种资源对象的信息

    • Etcd被形容为Kubernetes集群的大脑,是 Kubernetes的关键组件,因为它存储了集群的整个状态:其配置,规格以及运行中的工作负载的状态。 我们可以直接把 etcd 的数据存储理解为一个有序的 map,它存储着 key-value 数据。
    • Etcd主要由四个部分组成:HTTP Server、Store、Raft以及WAL
  • node:集群的数据平面,负责为容器提供运行环境 ( 干活 )

    • Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
    • KubeProxy : 负责提供集群内部的服务发现和负载均衡
    • Docker : 负责节点上容器的各种操作

在这里插入图片描述

Kubernetes 特点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

  • 可扩展: 模块化, 插件化, 可挂载, 可组合

  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Pod是什么?

* 每个 Pod 都有一个唯一的 IP 和主机名,并且在同一个 Pod 中,容器可以通过 localhost 相互通信
* k8s中的最小部署单元,不是一个程序/进程,而是一个环境, 其中可以运行1个或多个container(docker或其他容器),在一个pod内部的container共享所有资源,包括共享pod的ip:port和磁盘
* pod是临时性的,用完即丢弃的
* 具有共享存储/网络/UTS/PID的能力以及运行容器的规范

Kubernetes集群里的三种IP地址

  1. Node IP
    • 工作节点哪台机器上的IP(可能是物理机的IP也可能是虚拟机的IP ),每个service都会在node节点上开通一个端口,外部可以通过NodeIP:NodePort来访问service中的pod
    • pod和集群外通信,要借助于node ip
  2. Pod IP
    • 它是Docker Engine根据docker网桥的IP地址段进行分配的,通常是一个虚拟的二层网络
    • 同Service下的pod可以直接根据PodIP相互通信
  3. Cluster IP
    • Service的IP地址,此为虚拟IP地址。外部网络无法ping通,只有kubernetes集群内部访问使用
    • 不同Service下的pod在集群间pod通信要借助于 cluster ip

三种IP网络间的通信
service地址和pod地址在不同网段,service地址为虚拟地址,不配在pod上或主机上,外部访问时,先到Node节点网络,再转到service网络,最后代理给pod网络

K8S的常用指令

指令官方说明坐标:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#create

  • kubectl get namespace --查看当前有哪些namespace
  • kubectl get ns default --指定查看某一个namespace
  • kubectl create -f pod-command.yaml -n default --拉取镜像(创建新的,如果已存在就会报错)
    kubectl create deployment deployName --image=nginx -n attack --拉取已有镜像作为deployment
  • kubectl apply -f pod-command.yaml -n default --拉取镜像(有就更新,没有就创建)
  • kubectl delete pod mount-docker-sock -n attacktest --删除镜像
  • kubectl describe pod pod-base -n dev --查看pod运行信息错信息
  • kubectl exec -it mount-docker-sock-8644f59ff8-qkdcz bash -n attacktest --进入容器
  • kubectl delete deployment mount-docker-sock -n attacktest --删除deployment
  • kubectl cp 宿主机文件夹路径 ns名称/pod名称:/ --从宿主机复制到容器内
#####
# 将 /tmp/foo 从远程 pod 复制到本地的 /tmp/bar
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
# 将本地目录 /tmp/foo_dir 复制到默认命名空间中远程 Pod 中的 /tmp/bar_dir
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir
# 将 /tmp/foo 本地文件复制到特定容器中远程 Pod 中的 /tmp/bar
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
# 将 /tmp/foo 本地文件复制到命名空间中远程 pod 中的 /tmp/bar
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar
  • kubectl edit deployment/kspm-controller – 修改deployment运行的yaml文件
  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值