且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

K8S学习笔记

更新时间:2021-12-03 06:08:47

1.常用命令

服务启动

[root@k8s-master ~]# systemctl start etcd
[root@k8s-master ~]# systemctl start docker
[root@k8s-master ~]# systemctl start kube-apiserver.service 
[root@k8s-master ~]# systemctl start kube-apiserver.service 
[root@k8s-master ~]# systemctl start kube-controller-manager.service
[root@k8s-master ~]# systemctl start kube-scheduler.service
[root@k8s-master ~]# systemctl start kubelet.service 
[root@k8s-master ~]# systemctl start kube-proxy.service
[root@k8s-master ~]# kubectl expose deployment nginx-app --type=NodePort --port=80 --target-port=80
service "nginx-app" exposed
[root@k8s-master ~]# kubectl describe service nginx-app
Name:            nginx-app
Namespace:        default
Labels:            run=nginx-app
Selector:        run=nginx-app
Type:            NodePort
IP:            10.254.73.139
Port:            <unset>    80/TCP
NodePort:        <unset>    30048/TCP
Endpoints:        172.17.0.2:80
Session Affinity:    None
No events.

滚动升级

[root@k8s-master ~]# kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2

k8s概念

kubernetes集群

etcd:分布式存储;保存了整个集群的状态;

controller:控制节点; 控制节点负责整个集群的管理,例如:容器调度、资源状态维护、自动扩展、滚动更新等;

node:服务节点;服务节点是真正运行容器的主机;负责管理镜像和容器以及cluster内的服务发现和负载均衡;

k8s架构原理

核心层:Kubernetes最核心的功能,对外提供API构建高层应用,对内提供插件式应用执行环境;

应用层:部署(无状态应用、有状态应用、批处理任务、集群应用)和路由(服务发现、DNS解析)

管理层:系统度量()

pod概念

K8S SLB限制

  1. 接入已有的负载均衡的设备;
  2. 多租户的网络情况下,容器网络和主机网络是隔离的,这种情况下Kube-proxy是无法工作的;

核心组件

  1. etcd:用于服务发现、共享配置以及一致性保障;
  2. API server: 核心组件,提供集群管理的REST API接口,
  3. Kubelet: 每个节点上运行一个Kubelet服务进程,默认监听10250端口,接收并执行master发来的指令,管理Pod及Pod中的容器;

容器健康检查

  1. LivenessProbe探针:判断容器是否健康,如若检查到不健康则执行删除操作;
  2. ReadinessProbe探针:判断容器是否启动完成且准备接受请求;如果探测失败则修改容器状态;
  3. LivenessProbe探针检测方式:
ExecAction#在容器内执行一个命令,如果退出状态码为0,则容器健康;
TCPSocketActioon#通过容器的IP地址和端口号执行TCP检查;
HTTPGetAction#通过HTTP GET方法检查,如果状态码大于200且小于400,则容器健康;