k8s是什么:Docker分布式系统解决方案
单机版k8s环境搭建:centos7
systemctl disabled firewalld
systemctl stop firewalld
安装etcd(高可用键值数据库)和k8s
yum update #多次尝试,确认网络 连接
yum install -y etcd kubernetes
启动服务(进程)
systemctl start etcd
systemctl start docker #容器创建管理
systemctl start kube-apiserver #所有资源增、删、改、查等操作入口
systemctl start kube-controller-manager #自动化控制中心
systemctl start kube-scheduler #pod调度
systemctl start kubelet #node节点进程,负责pod对应容器创建、起停
sustemctl start kube-proxy #service通信及负载均衡机制组件
常用操作命令
kubectl get nodes #查看集群中node个数
kubectl descripe node <node_name> #查看详细信息
kubectl create -f *.yaml #创建yaml对应资源文件(即kind对象)
kubectl get 对象名称 #查看对象信息
kubectl get svc service_name -o yaml #查看service ClusterIP
kubectl get pods --namespace=namespace_name #查看命名空间的中的对象
基本概念
k8s中所有资源对象都可以使用yaml或JSON文件定义或描述
通常一个节点运行几百个pod
master 集群控制节点 占用一个服务器,高可用占3个服务器
node node工作节点 可以是物理机或虚拟机,node IP物理网卡的IP地址
pod kind:pod,包含一个pause容器和其他业务容器(共享pause的网络栈和volume挂载卷),具有单独的ip地址及Endpoint(Pod IP+ContainerPort pod之间彼此通信,流量通过TCP/IP node IP流出)
Label 一个资源对象(node、pod、service、rc)可以任意多label,一个label可以任意多资源对象
Replication Controller(RC) 描述期望pod的副本数,根据标签筛选目标pod,实际副本小于预期则根据模版创建pod
Deployment RC的升级,可以随时查看当前部署进度
Horizontal Pod Autoscaler(HPA) 横向扩容,可以使用yaml定义之外的方式定义
StatefulSet 用于管理有状态的集群,例如MySql集群,每个pod都有稳定唯一的网络标示及规范名称
Service 具有虚拟IP(Cluster IP)不可ping属于k8s集群内部地址,yaml可定义多端口,可使用type=NodePort实现外部访问Service(例如web端的服务模块),但有负载均衡问题,若运行在谷歌GCE公有云(type=LoardBalancer)则可以解决
Volume 存储卷 Pod中能被多容器访问的共享目录
Persistent Volume 网络存储
Namespace 命名空间 实现多租户资源隔离,一旦创建就可以指定资源对象(×.yaml)在那个Namespace
Annotation 注解
本文转自CSDN-k8s关键知识点汇总(一)