k8s知识点总结

一、master节点

名词解释

  1. Kubernetes Controller Manager :k8s中所有资源对象的自动化控制中心,维护管理集群的状态,比如故障检测,自动扩展,滚动更新,包括节点状态状况、Pod个数、Pods和Service的关联等等。

  2. Kubernetes Scheduler :负责资源调度,按照预定的调度策略将Pod调度到相应的机器上。

  3. kube-apiserver :以REST API服务形式提供接口,作为整个系统的控制入口。

  4. etcd :负责节点间的服务发现和配置共享。

  5. kube-proxy : 运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略,保存整个集群的状态

  6. flannel : 运行在每个计算节点上,负责网络通信


二、node节点

可以在master中使用命令 kubectl get nodes查看集群中的node节点。每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,该节点上的工作负载就会被Master自动转移到其它节点上

名词解释

  1. kubelet : 负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能

  2. kube-proxy :实现service的通信与负载均衡

  3. flannel : 负责网络通信


三、常见k8s名词介绍

  1. 容器集(Pod) :被部署在单个节点上的,且包含一个或多个容器的容器组。同一容器集中的所有容器共享同一个 IP 地址、IPC、主机名称及其它资源。容器集会将网络和存储从底层容器中抽象出来。这样,您就能更加轻松地在集群中移动容器。

  2. 副本控制器(Replication controller ):用于控制应在集群某处运行的完全相同的容器集副本数量。

  3. 服务(Service ):将工作内容与容器集分离。Kubernetes 服务代理会自动将服务请求分发到正确的容器集——无论这个容器集会移到集群中的哪个位置,甚至可以被替换掉。

  4. kubectl : Kubernetes 的命令行配置工具。

  5. DNS :一个可选的DNS服务,用于为每个Service对象创建DNS记录,这样所有的Pod就可以通过DNS访问服务了

资源对象类型:kind

pod、deployment、statefulset(有状态)、job、cronjob(定时任务)、DaemonSet

  1. DaemonSet:用于在每个Kubernetes节点中将守护进程的副本作为后台进程运行,确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。pod不受调度策略控制使用DaemonSe场景
  • 集群存储守护程序,如glusterd、ceph要部署在每个节点上以提供持久性存储;

  • 节点监视守护进程,如Prometheus监控集群,可以在每个节点上运行一个node-exporter进程来收集监控节点的信息;

  • 日志收集守护程序,如fluentd或logstash,在每个节点上运行以收集容器的日志


四、k8s使用

1、创建pod
kubectl run consul--image=consul:1.5.2 --port=8500 --dry-run -o yaml >>consul-deployment.ymal

cat consul-deployment.ymal

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: consul
  name: consul
spec:
  replicas: 1
  selector:
    matchLabels:
      run: consul
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: consul
    spec:
      containers:
      - image: consul:1.5.2
        name: consul
        ports:
        - containerPort: 8500
        resources: {}
status: {}

kubectl apply -f zookeeper-deployment.ymal

#查询、创建deploy控制器时会自动创建rs控制器,二者具有相同的标签选择器
kubectl get deploy

#导出资源成yaml文件到新的文件中

kubectl get deployment/nginx-deployment --export -o yaml > nginx_abc.yaml

kubectl get rs

2、直接创建deploy
kubectl run nginx --image=nginx --port=80 --replicas=2
3、查询pod
kubectl get pods --all-namespaces 
kubectl get pods --all-namespaces -o wide 
kubectl describe pod kube-flannel-ds-amd64-2d6tb -n kube-system  查询具体信息 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uoWWs0rT-1637292831685)(image/image.png)]

4、删除pod
kubectl delete pod kube-proxy-wlrhr -n kube-system  
kubectl delete deployment nginx
5、升级pod
直接修改yaml (知道yaml位置)
kubectl edit deploy nginx  (不知道yaml位置)
kubectl set image deploy nginx nginx=nginx:1.9 --record   升级并记录,可实现回滚,推荐使用该方法

滚动升级相关命令

$ kubectl set image deploy/nginx nginx=nginx:1.7.9 --record

$ kubectl set image deploy/nginx nginx=nginx --record

$ kubectl rollout status deploy nginx #查看升级状态

$ kubectl rollout pause deployment nginx #升级暂停

$ kubectl rollout resume deployment nginx #恢复升级

$ kubectl describe deploy nginx #查看升级详情

$ kubectl rollout history deploy/nginx #查看升级历史

6、回滚

这里使用–to-revision=1回滚到1版本,如果省略这个选项,则会回退到上个版本

kubectl rollout undo deploy pc-deployment --to-revision=1 -n dev
7、扩缩容
kubectl scale deploy nginx-deployment --replicas=3 -n default  副本数
8、pod日志
kubectl get pods -o wide   查询pod
kubectl logs mysql-rc-5cc89
9、pod容器使用

获取节点信息:kubectl get nodes

查询当前适用版本:kubectl api-versions

查询pod: kubectl get pods -o wide

进入pod: kubectl exec -it mysql-rc-5cc89 /bin/sh

登录:mysql -u root -p

你可能感兴趣的:(kubernetes,docker,运维,容器,负载均衡)