DevOphotoshop-7-K8S入门
Lec7-K8S入门
1. 为什么需要K8S?
1.1. 容器是什么?
- 容器是资源精细化编排的代表。
- 容器通常指在一个隔离的环境中运行的进程以及进程所依赖的环境的总称。
- 隔离:借助于linux的namespace机制
- 资源限制:可以基于linux的cgroup计算对容器所能使用的资源做限制,主要指cpu、内存资
- 进程:linux进程
- 依赖环境:进程运行所依赖的库、以及其他的资源
- 容器的优点
- 更轻量
- 资源利用更高效
- 以应用为中心的管理
1.2. 为什么需要K8S
- 需要一个系统来管理集群上的大量容器。
- 用于完成容器的编排,目前K8S已经是容器编排领域事实上的标准。
2. 什么是K8S
- K8S是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。
- 能力
- 支持不同的底层资源平台
- 自动弹性伸缩
- 高可靠性
2.1. K8S逻辑架构
- Master节点
- API Server
- Schuduler
- Controller
- etcd
- Node节点
- pod
- docker
- kubelet
- kube-proxy
- fluentd
2.2. K8S组件
- 控制平面:对集群做出全局决策,以及检查和响应集群时间(例如,当不满足部署的replicas字段时,启动新的pod)
- kube-apiserver
- kube-scheduler
- kube-controller-manager
- cloud-controller-manager
- etcd
- 计算平面
- 计算平面由Node节点组成
- 运行组件
- Kubelet
- Kube-proxy
- 容器运行时(Container Runtime)
- 插件(Addons)
- DNS
- Dashboard
- 容器资源监控
- 日志
2.3. K8S重要概念
2.3.1. POD
- POD是K8S的最小资源管理单位,POD有点脆弱。
- POD中包含资源
- 一个或多个应用程序容器
- 存储卷
- 网络地址,如IP地址、端口等
2.3.2. Workload 工作负载
- 工作负载是在K8S上运行的应用程序,K8S主要支持
- Deployment
- Statefulset
- Damonset
- Job
- CronJob
2.3.3. Service
- Service定义了POD提供给外部应用的方式
- 为什么引入Service?
- Service怎么和Pod关联起来?
- Service有哪些类型
- ClusterIP
- NodePort
- LoadBalancer
- ExternalName
2.3.4. label
- label是
key/value
键值对,用来识管理和识别资源。 - Node、Pod、工作负载、密钥、configmap、service等等所有资源都可以增加标签
- 签通常用来识别资源,一般和标签选择器配合使用。
3. K8S实操
- 实操会覆盖一个应用的完整的生命周期
- 实验操作地址:https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/
3.1. 创建集群
- 本次实验使用Minikube
cat /etc/lsb-release
hostname
hostnamectl set-hostname yanwei
minikube start
kubectl version
kubectl cluster-info
kubectl get nodes
kubectl get pod -n kube-system
systemctl status kubelet 思考题:kubelet可以放在容器中吗?
kubectl get pod --no-headers --all-namespaces |wc -l
docker ps -a |grep -v NAMES |wc -l
pause容器即infra容器,主要负责为POD准备网络和存储,其他的容器和Pause容器共享网络和存储。
docker inspect
kubectl get nodes --show-labels
kubectl label nodes <your-node-name> disktype=ssd
3.2. 部署应用
kubectl get nodes //等待节点变成ready状态
kubectl create deployment yanwei.app --image=gcr.io/谷歌-samples/kubernetes-bootcamp:v1
kubectl get pod -o wide
kubectl label pod yanwei.app-65ddbc7454-8fm8g transwarp.io/name=yanwei
3.3. expose应用
kubectl delete deployment kubernetes-bootcamp
kubectl create deployment yanwei.app --image=gcr.io/谷歌-samples/kubernetes-bootcamp:v1
kubectl scale deployments/yanwei.app --replicas=3
kubectl expose deployment/yanwei.app --type="NodePort" --port 8080 --name yanwei
访问service,多次访问service,是从不同的pod中返回的。
curl $(minikube ip):31172
kubectl exec -ti $POD_NAME -- /bin/bash
ps -elf
more server.js
3.4. 扩容缩容应用
kubectl get deployments
kubectl get rs
kubectl delete deployments kubernetes-bootcamp
kubectl create deployment yanwei.app --image=gcr.io/谷歌-samples/kubernetes-bootcamp:v1
kubectl get deployments
kubectl scale deployments/yanwei.app --replicas=4
kubectl scale deployments/yanwei.app --replicas=2
3.5. 滚动升级
kubectl delete deployments kubernetes-bootcamp
kubectl delete service kubernetes-bootcamp
kubectl create deployment yanwei.app --image=gcr.io/谷歌-samples/kubernetes-bootcamp:v1
kubectl scale deployments/yanwei.app --replicas=3
kubectl expose deployment/yanwei.app --type="NodePort" --port 8080 --name yanwei
curl $(minikube ip):31120 //执行多次
kubectl set image deployments/yanwei.app kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
curl $(minikube ip):31120 //执行多次 升级前后查看版本
kubectl rollout status deployments/yanwei.app
升级失败
kubectl set image deployments/yanwei.app kubernetes-bootcamp=gcr.io/谷歌-samples/kubernetes-bootcamp:v10
kubectl get pod -o wide // 有pod镜像下载失败
kubectl describe pod
kubectl rollout undo deployments/yanwei.app
3.6. K8S学习建议
4. K8S进阶
4.1. 设计模式-K8S设计模式
- 控制器模式:面向期望状态的编程模式
- 一个控制器至少管理一种类型的K8S资源。
- 每个资源对象都有一个代表期望状态的spec字段。
- 该资源的控制器负责确保当前状态趋近期望状态
- 推荐阅读:《Kubernetes 设计模式》
4.2. 设计模式-插件模式
4.3. 存储
4.3.1. K8S存储架构
4.3.2. CSI架构
4.4. 网络
4.4.1. POD之间通信
4.4.2. kube-proxy & kube-dns
4.4.3. flannel
4.5. 调度
4.6. 容器运行时
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiakeij
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22