0
点赞
收藏
分享

微信扫一扫

k8s集群之初认识

yundejia 2022-01-22 阅读 69

一、了解学习k8s的过程

1、基础概念:什么是pod   控制器类型  k8s  网络通讯模式
2、构建K8S集群
3、资源清单:掌握资源清单的语法,编写pod   掌握pod的生命周期
4、pod控制器:掌握各种控制器的特点以及使用,常用deployment
5、服务发现:掌握svc(service)原理及其构建方式
6、存储:掌握多种存储类型的特点,并且能够在不同环境中选择合适的存储方案
7、调度器:掌握调度器原理,能够根据要求把pod定义到想要的节点运行
8、安全:集群的认证,鉴权,访问控制原理及其流程
9、HELM:类似linux yum,掌握HELM原理,HELM模板自定义,HELM部署一些常用插件
10、运维:修改kubeadm达到证书可用期限为10年,能够构建高可用的kubenetes集群

二、一般名词解析及其作用

apiserver 所有服务的入口
crontrollermanager  维持副本期望数目
scheduler: 负责介绍任务,选择合适的节点进行分配任务
etcd:键值对数据库,储存K8S集群所有重要信息
kubelet:直接跟容器引擎交互实现容器的生命周期管理
kube-proxy:负责写入规则至iptables,ipvs,实现服务映射访问的
coredns 可以为集群中的svc创建要给域名IP对应关系解析
dashboard 给k8s集群提供一个b/s结构访问体系
ingree controller  官方只能实现四层dialing,ingress可以实现七层代理
federation 提供一个可以跨集群中心多k8s统一管理功能
prometheus,提供k8s集群的监控能力
elk:提供k8s集群日志统一分析入口
flannel是最常用的网络服务,对网络进行规划建立一个覆盖网络

三、Kubernetes主要由以下几个核心组件组成:

etcd保存了整个集群的状态;
apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
除了核心组件,还有一些推荐的Add-ons:

kube-dns负责为整个集群提供DNS服务
Ingress Controller为服务提供外网入口
Heapster提供资源监控
Dashboard提供GUI
Federation提供跨可用区的集群
Fluentd-elasticsearch提供集群日志采集、存储与查询

四、常用的一些k8s命令


​kubectl create ns test   #创建空间
kubectl get deployment -n test    #查看运行deployment 信息
kubectl delete deployment “名称” -n test   #删除deployment
kubectl get pod -n test -o wide      #查看运行pod详细信息
kubectl describe pod/"pod名称"  -n test  #查看某个pod详情
kubectl get svc -n test    #查看pod对应的地址和端口映射
kubectl get ing -n test   #查看ing对应的pod名
kubectl  apply -f sdk.crevalue.cn.yaml   #创建pod

kubectl  delete -f sdk.crevalue.cn.yaml   #删除pod
kubectl get node    #查看集群
kubectl describe node  #查看集群服务器信息
kubectl delete ing/“名称” -n test  # 删除pod对应的ingress
kubectl delete svc/“名称” -n test    #删除pod对应的svc
kubectl delete deploy “名称” -n test     #删除pod对应的deploy
kubectl logs pod “名称” -n test     #查看pod日志
kubectl exec -it pod/“名称” -n test -- bin/bash     #进入docker,退出时不会停止容器
kubectl get pods --all-namespaces    ###查看所有pod信息
kubectl get cs    # 查看集群健康状态
kubectl get deployment --all-namespaces # 获取所有deployment
kubectl get rc,services  # 查看rc和servers
kubectl logs “名称”-n test    # 查看pod日志需要指定命名空间
kubectl exec -it pod/“名称” -n test -- bin/bash    # 进入docker,退出时不会停止容器
kubectl get pods --all-namespaces      #查看具体pods,记得后边跟namespace名字哦
kubectl get deployment --all-namespaces   # 获取所有deployment
kubectl get pods --include-uninitialized    # 列出该 namespace 中的所有 pod 包括未初始化的
kubectl get rc,services    # 查看rc和servers
kubectl cluster-info     # 集群核心组件运行情况  
kubectl version           # 查看kubulet版本
kubectl api-versions      # 查看一些API版本
kubectl get events       # 查看node节点事件
kubectl get nodes      #获取全部节点
kubectl delete node k8s2  #删除节点
kubectl expose rc nginx --port=80 --target-port=8000  #为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口

举报

相关推荐

0 条评论