======================基本概念==========================
【1】cluster是计算 存储 网络资源的集合
master是主节点,负责资源调度,理论上奇数倍运行高可用
node的职责是运行容器,由master管理,可以打标签,虚拟机物理机均可
pod为k8s中最小的运行单元 可以是单独的容器或者是容器集合
controller类型:
「1」deployment:管理pod的多个副本 最常用
「2」ReplicaSet:实现pod多副本管理,使用deployment的时候会自动创建ReplicaSet,也就是说
deployment是通过ReplicaSet来管理多副本的,通常不需要直接使用
「3」DaemonSet:每个节点只运行一个pod
「4」StatefuleSet:保证每个pod副本在整个生命周期名字不变,其他的每次重新运行会改名
「5」job:用于任务结束自动删除
Service:定义了外界访问一组pod的方式,为pod提供负载,通常运行和访问分别由deployment和service负责
Namespace:多个用户同时使用一个集群区分的关键就是命名空间,完成的逻辑划分
ReplicationController (Rc)会根据标签选择器管理符合其标签的所有pod,并维持在replicas设置的数量上。
【2】pod和deployment的关系
(1)pod是单一或一组容器的合集
(2)deployment是pod版本管理的工具 用来区分不同版本的pod
(3)单独创建pod的时候就不会有deployment出现,但是创建deployment的时候一定会创建 pod,因为pod是一个基础的单位。
【3】deployment部署的pod副本会分布在node上每个node可以运行多个pod
DaemonSet每个node上只运行一个pod副本
【4】容器分为两类 服务类和工作类
服务类 持续运行(Deployment DaemonSet ReplicaSet)
工作类 处理完自动退出(job)
【5】service代表了一组pod,service有自己不变的ip,客户端只需要访问service的ip
======================基础篇==========================
查看集群状态
kubectl get all
查看所有的命名空间
kubectl get namespace
1、查看节点状态
kubectl get nodes
2、查看pod状态
kubectl get pod -n default -o wide
kubectl get pod --all-namespaces -o wide
3、查看pod具体情况
kubectl describe podjenkins-6dd65f9d9-b7494--namespace=default
重点
4、运行容器(在不同namespace中可以重名)
kubectl run jenkins --image=jenkins/jenkins:lts --replicas=4 -n app
5、查看部署的应用
kubectl get deployment -n app -o wide(指定namespace)
kubectl get deployment --all-namespaces -o wide(指定全namespace)
kubectl get deployment jenkins -n app -o wide (指定应用)
6、查看deployment的描述
kubectl describe deployment jenkins
7、查看副本(deployment是由ReplicaSet来管理pod)
kubectl get ReplicaSet
8、查看pod的创建过程
kubectl describe ReplicaSet
9、文件方式创建deployment (常用)
kubectl apply -f jenkins-deployment.yaml
Deployment.yaml.note
10、删除应用
kubectl delete deployment jenkins
kubectl delete -f jenkins-deployment.yaml
11、修改运行副本数(更改副本后)(伸缩)
kubectl apply -f jenkins-deployment.yaml
12、将k8s master作为主节点
kubectl taint node k8s-master node-role.kubernetes.io/master-
13、取消将k8s master作为主节点
kubectl taint node k8s-master node-role.kubernetes.io/master="":NoSchedule
14、查看现有节点的标签
kubectl get node --show-labels
15、用label给节点打标签(控制部署位置)
kubectl label nodeizm5ehcv43i5tpesna9653zapp=jiankm
重新运行 kubectl apply -f jenkins-deployment.yaml
16、删除标签(删除后部署的应用不会变)
kubectl label nodeizm5ehcv43i5tpesna9653zapp-
17、获取系统daemon组件
kubectl get daemonset --namespace=kube-system
18、创建daemonset应用
kubectl create -f jenkins-daemonset.yaml
19、查看daemonset副本配置
kubectl edit daemonset jenkins -n app
20、查看job状态
kubectl get job
21、kubectl获取日志
kubectl logs jenkins-56d7c8bf69-ht798 -n app