K8s知识内容总结

1. K8s是个什么东西?解决了什么核心问题?相比docker有什么核心优势?

k8s源于google内部的一个集群管理系统,它是用来管理集群的。比例,一个大型的电商系统,在微服务架构模式下,一个集群中可能有上万个进程在跑,那么怎么去部署,监控,保持稳定性是极其复杂的事,如果完全靠运维人工处理,是非常难的,必须借助一些自动化的管理手段。而k8s就是这样的工具,让复杂的运维工作变得简单,开发也可以完成。docker是容器技术,核心作用是做资源的隔离,如cpu,内存,磁盘,使得一个宿主机上可以运行多个进程,并且进程间不相互影响。

关键词:

k8s:集群管理,自动化,节约运维陈本

docker:容器技术,资源隔离

2. K8s的架构是怎样的?核心组件有哪些?解决了什么核心问题?

图片来源:https://medium.com/@keshiha/k8s-architecture-bb6964767c12

Master Node:集群管理节点

        API Server:流量入口

        controller Manager:  监控和维护节点和容器状态,实现如故障检查,服务迁移,容器伸缩

        kube Scheduler: 负责容器编排,比如调度pod到合适的节点上工作

        etcd: 分布式的存储组件

Worker Node:工作节点

        kubelet: 节点与外部通信的入口

        kube Proxy: 节点的网络组件,负责网络通信相关的事项

        container-runtime: 比如说docker,当然也可以是其它的容器

3. 常见的微服务集群在k8s上的架构设计是如何的?

由上图可知,k8s中有几个核心的对象,去支持微服务架构。

ingress 对象: 存储路由转发规则

ingress controller:独立的pod,根据ingress中的转发规则实现路由转发(可实现7层网络协议的路由转发)

service:实现负载均衡的关键设计,使用类似iptables的方式,将请求均匀的分配到下游的pod中

depolyment: 实现高可用的对象,depolyment中可以指定pod的副本数,并会对其监控,保证有指定数量的pod在运行

pod:可以理解成容器,可以在指定的资源下,运行进程

蓝绿环境下k8s架构图

这里的架构会复杂一些,k8s的上游多了一个反向代理。之所以这么做,是因为ingress不支持流量从一个ingress转到另一个ingress,且没有跨namespace的转发。

4. 作为研发学习k8s有什么用处?可以解决哪些实际的问题?

有了k8之后,运维工作之后变的简单很多。作为研发不可避免的需要做一些运维工作。

常见的问题:pod服务异常(cpu过高,jvm内存过高,pod内存过高,pod反复重启)

5. docker和k8s中的一些常见指令

############################### docker中的指令 ###############################
docker ps -- 查看容器进程
docker ps -a -- 查看运行过的容器
docker info -- 查看容器信息
docker images -- 查看容器镜像
docker run xx -- 运行xx镜像
docker run -it xx sh --运行镜像,进入容器内存 运行shell
ctrl + D --从容器中退出
docker stop containerId  --停止容器运行
docker run -d nginx:alpine -- -d 表示后台运行
docker exec -it containerId/containerName sh 进入后台并执行shell
docker rm 容器id前缀 -- 删除容器
docker rmi          -- 删除镜像
docker start 容器id -- stop后的容器,可以通过这种方式重新启动


############################### k8s中的指令   ###############################
minikube status 查看集群状态
kubectl get node 查看节点信息
minikube ssh 登入节点
sudo minikube start --force --kubernetes-version=v1.28.3
kubectl get pod -n kube-system 查看节点中的组件状态
kubectl apply -f ngx-pod.yml -- 使用yaml文件 申明式的启动pod
kubectl delete -f ngx-pod.yml  -- 使用yaml文件 删除pod
kubectl delete pods <pod> -- 删除pod
kubectl logs echo-job-f59c2 -- 查看pod中的日志(echo输出的)
kubectl port-forward wp-pod 8080:80 & -- 端口映射
kubectl run spring-demo --image=spring-demo:v1 --port=8087

参考文章:

k8s官网:服务(Service) | Kubernetes

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值