模拟k8s项目的生命周期
文章目录
- 模拟k8sngin项目生命周期
- Kubectl是管理k8s集群的命令行工具
- k8s项目创建资源
- 发布nginx服务提供负载均衡功能
- 为什么可以访问nginx?
- 查看proxy负载均衡端口
- 更新nginx为1.14版本
- 回滚nginx
- 删除nginx项目
模拟k8sngin项目生命周期
项目的生命周期,创建–》发布–》更新–》回滚–》删除
了解pod类型
- port
port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service
- nodePort
nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service。
- targetPort
targetPort是pod的端口,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器。
- containerPort
containerPort是pod内部容器的端口,targetPort映射到containerPort。
k8s群集提供外部服务图
负载均衡功能
Kubectl是管理k8s集群的命令行工具
[root@localhost bin]# kubectl --help
kubectl controls the Kubernetes cluster manager. Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/Basic Commands (Beginner):create Create a resource from a file or from stdin.expose 使用 replication controller, service, deployment 或者 pod
并暴露它作为一个 新的 Kubernetes Servicerun 在集群中运行一个指定的镜像set 为 objects 设置一个指定的特征Basic Commands (Intermediate):explain 查看资源的文档get 显示一个或更多 resourcesedit 在服务器上编辑一个资源delete Delete resources by filenames, stdin, resources and names, or by resources and
label selectorDeploy Commands:rollout Manage the rollout of a resourcescale 为 Deployment, ReplicaSet, Replication Controller 或者 Job
设置一个新的副本数量autoscale 自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController
的副本数量Cluster Management Commands:certificate 修改 certificate 资源.cluster-info 显示集群信息top Display Resource (CPU/Memory/Storage) usage.cordon 标记 node 为 unschedulableuncordon 标记 node 为 schedulabledrain Drain node in preparation for maintenancetaint 更新一个或者多个 node 上的 taintsTroubleshooting and Debugging Commands:describe 显示一个指定 resource 或者 group 的 resources 详情logs 输出容器在 pod 中的日志attach Attach 到一个运行中的 containerexec 在一个 container 中执行一个命令port-forward Forward one or more local ports to a podproxy 运行一个 proxy 到 Kubernetes API servercp 复制 files 和 directories 到 containers 和从容器中复制 files 和
directories.auth Inspect authorization
k8s项目创建资源
[root@localhost ~]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3
image 镜像 replicsa 副本集
查看资源地址
[root@localhost ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-depolyment-5d648c8f47-9k2q9 1/1 Running 0 2m55s 172.17.27.3 192.168.136.30 <none>
nginx-depolyment-5d648c8f47-9p2w4 1/1 Running 0 2m55s 172.17.38.2 192.168.136.40 <none>
nginx-depolyment-5d648c8f47-frqsk 1/1 Running 0 2m55s 172.17.38.3 192.168.136.40 <none>
我们可以去接口看一下
查看所有服务
[root@localhost ~]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-depolyment-5d648c8f47-9k2q9 1/1 Running 0 13m
pod/nginx-depolyment-5d648c8f47-9p2w4 1/1 Running 0 13m
pod/nginx-depolyment-5d648c8f47-frqsk 1/1 Running 0 13mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 22hNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-depolyment 3 3 3 3 13mNAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-depolyment-5d648c8f47 3 3 3 13m
查看是否提供服务(还没有发布服务)
[root@localhost ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 22h
发布nginx服务提供负载均衡功能
[root@localhost ~]# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort
Deployment为Pod和ReplicaSet提供了一个声明式定义方
查看是否提供服务(有服务可以访问了)
[root@localhost ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 22h
nginx-service NodePort 10.0.0.176 <none> 80:30967/TCP 23s
网络状态详细信息
[root@localhost ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-7697996758-9hqnk 1/1 Running 0 65m 172.17.38.2 192.168.136.40 <none>
nginx-7697996758-g6pfx 1/1 Running 0 65m 172.17.38.3 192.168.136.40 <none>
nginx-7697996758-z5pht 1/1 Running 0 65m 172.17.27.3 192.168.136.30 <none>
查看资源对象简写
[root@localhost bin]# kubectl api-resources
查看关联后端的节点
[root@localhost ~]# kubectl get ep
NAME ENDPOINTS AGE
kubernetes 192.168.136.60:6443,192.168.136.88:6443 23h
nginx-service 172.17.27.3:80,172.17.38.2:80,172.17.38.3:80 61m
为什么可以访问nginx?
创建过程
- kubelet取代了master执行任务创建资源
- port是k8s集群内部访问service的端口,targetPort是pod的端口都是80
- 通过kube-proxy,实现流量从service到pod的转发
- nodePort是外部访问k8s集群中service的端口
查看proxy负载均衡端口
kubernetes里kube-proxy支持三种模式,在v1.8之前我们使用的是iptables 以及 userspace两种模式,在kubernetes 1.8之后引入了ipvs模式
在node01操作 同样安装ipvsadmin工具查看
[root@localhost ~]# yum install ipvsadm -y
[root@localhost ~]# ipvsadm -L -n
TCP 192.168.136.40:30001 rr-> 172.17.27.2:8443 Masq 1 0 0
TCP 192.168.136.40:30967 rr-> 172.17.27.3:80 Masq 1 0 0 -> 172.17.38.2:80 Masq 1 0 0 -> 172.17.38.3:80 Masq 1 0 0
在node02操作 同样安装ipvsadmin工具查看
[root@localhost ~]# yum install ipvsadm -y
[root@localhost ~]# ipvsadm -L -n
TCP 192.168.136.30:30967 rr-> 172.17.27.3:80 Masq 1 0 0 -> 172.17.38.2:80 Masq 1 0 0 -> 172.17.38.3:80 Masq 1 0 0
访问地址
[root@localhost bin]# kubectl logs nginx-7697996758-9hqnk
更新nginx为1.14版本
查看版本号
查看版本号
更新命令
我们可以看帮助信息
[root@localhost bin]# kubectl set --help
]Configure application resources These commands help you make changes to existing application resources.Available Commands:env Update environment variables on a pod templateimage 更新一个 pod template 的镜像resources 在对象的 pod templates 上更新资源的 requests/limitsselector 设置 resource 的 selectorserviceaccount Update ServiceAccount of a resourcesubject Update User, Group or ServiceAccount in a
RoleBinding/ClusterRoleBindingUsage:kubectl set SUBCOMMAND [options]Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all
commands).
获取修改模板
[root@localhost bin]# kubectl set image --help
Examples:# Set a deployment's nginx container image to 'nginx:1.9.1', and its busybox
container image to 'busybox'.kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
找到更新命令开始更新为1.14
[root@localhost bin]# kubectl set image deployment/nginx nginx=nginx:1.14
deployment.extensions/nginx image updated
处于动态监听状态
[root@localhost ~]# kubectl get pods -w
NAME READY STATUS RESTARTS AGE
nginx-6ff7c89c7c-2hxbj 0/1 ContainerCreating 0 5s 创建
nginx-7697996758-9hqnk 1/1 Running 0 95m
nginx-7697996758-g6pfx 1/1 Running 0 95m
nginx-7697996758-z5pht 1/1 Running 0 95m
nginx-6ff7c89c7c-2hxbj 1/1 Running 0 38s
nginx-7697996758-g6pfx 1/1 Terminating 0 96m 删除
nginx-6ff7c89c7c-n9kwl 0/1 Pending 0 0s
nginx-6ff7c89c7c-n9kwl 0/1 Pending 0 1s
nginx-6ff7c89c7c-n9kwl 0/1 ContainerCreating 0 1s 创建
nginx-7697996758-g6pfx 0/1 Terminating 0 96m 删除
nginx-7697996758-g6pfx 0/1 Terminating 0 96m
nginx-7697996758-g6pfx 0/1 Terminating 0 96m
nginx-6ff7c89c7c-n9kwl 1/1 Running 0 23s
nginx-7697996758-9hqnk 1/1 Terminating 0 96m
nginx-6ff7c89c7c-7wmwv 0/1 Pending 0 0s
nginx-6ff7c89c7c-7wmwv 0/1 Pending 0 0s
nginx-6ff7c89c7c-7wmwv 0/1 ContainerCreating 0 0s
nginx-7697996758-9hqnk 0/1 Terminating 0 96m
nginx-7697996758-9hqnk 0/1 Terminating 0 96m
nginx-7697996758-9hqnk 0/1 Terminating 0 96m
nginx-7697996758-9hqnk 0/1 Terminating 0 96m
nginx-6ff7c89c7c-7wmwv 1/1 Running 0 18s
nginx-7697996758-z5pht 1/1 Terminating 0 96m
nginx-7697996758-z5pht 0/1 Terminating 0 96m
nginx-7697996758-z5pht 0/1 Terminating 0 97m
nginx-7697996758-z5pht 0/1 Terminating 0 97m
这里规律是先创建在删除
刷新查看是否更新成功
回滚nginx
查看命令帮助
[root@localhost bin]# kubectl rollout --helpManage the rollout of a resource.Valid resource types include: \* deployments \* daemonsets \* statefulsetsExamples:\# Rollback to the previous deploymentkubectl rollout undo deployment/abc\# Check the rollout status of a daemonsetkubectl rollout status daemonset/fooAvailable Commands:history 显示 rollout 历史pause 标记提供的 resource 为中止状态resume 继续一个停止的 resourcestatus 显示 rollout 的状态undo 撤销上一次的 rolloutUsage:kubectl rollout SUBCOMMAND [options]Use "kubectl <command> --help" for more information about a given command.Use "kubectl options" for a list of global command-line options (applies to allcommands).
查看历史版本
[root@localhost ~]# kubectl rollout history deployment/nginx
deployment.extensions/nginx
REVISION CHANGE-CAUSE
1 <none>
2 <none>
执行回滚
[root@localhost bin]# kubectl rollout undo deployment/nginxdeployment.extensions/nginx
检查回滚状态
[root@localhost bin]# kubectl rollout status deployment/nginxdeployment "nginx" successfully rolled out
处于动态监听状态
[root@localhost ~]# kubectl get pods -w
还是先创建在删除
删除nginx项目
查看deployment
[root@localhost ~]# kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx 3 3 3 3 117m
删除nginx
[root@localhost ~]# kubectl delete deployment/nginx
deployment.extensions "nginx" deleted
查看服务SVC
[root@localhost ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 24h
nginx-service NodePort 10.0.0.176 <none> 80:30967/TCP 117m
删除服务SVC
[root@localhost ~]# kubectl delete svc/nginx-service
service "nginx-service" deleted
查看已经删除
[root@localhost ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 24h
查看具体资源的详细信息
[root@localhost bin]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3kubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.deployment.apps/nginx created
查看服务
[root@localhost bin]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-7697996758-2ph6x 0/1 ContainerCreating 0 13s
nginx-7697996758-jfngb 0/1 ContainerCreating 0 13s
nginx-7697996758-w4z29 0/1 ContainerCreating 0 13s
查看nginx具体资源
[root@localhost ~]# kubectl describe pod nginx-7697996758-2ph6x
Name: nginx-7697996758-2ph6x
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: 192.168.136.40/192.168.136.40
Start Time: Sat, 10 Oct 2020 00:35:12 +0800
Labels: pod-template-hash=7697996758run=nginx
Annotations: <none>
Status: Running
IP: 172.17.38.3
Controlled By: ReplicaSet/nginx-7697996758
Containers:nginx:Container ID: docker://a7d0945872e9b9d71be44a8376df6d300384ad92fcf84b4852a90f1e831b4580Image: nginx:latestImage ID: docker-pullable://nginx@sha256:fc66cdef5ca33809823182c9c5d72ea86fd2cef7713cf3363e1a0b12a5d77500Port: 80/TCPHost Port: 0/TCPState: RunningStarted: Sat, 10 Oct 2020 00:35:34 +0800Ready: TrueRestart Count: 0Environment: <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-w6xph (ro)
Conditions:Type StatusInitialized True Ready True ContainersReady True PodScheduled True
Volumes:default-token-w6xph:Type: Secret (a volume populated by a Secret)SecretName: default-token-w6xphOptional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300snode.kubernetes.io/unreachable:NoExecute for 300s
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 34s default-scheduler Successfully assigned default/nginx-7697996758-2ph6x to 192.168.136.40Normal Pulling 30s kubelet, 192.168.136.40 pulling image "nginx:latest"Normal Pulled 13s kubelet, 192.168.136.40 Successfully pulled image "nginx:latest"Normal Created 13s kubelet, 192.168.136.40 Created containerNormal Started 12s kubelet, 192.168.136.40 Started container
查看deployment资源
[root@localhost bin]# kubectl describe deployment/nginx
进入pod
[root@localhost ~]# kubectl exec -it nginx-7697996758-2ph6x bash
root@nginx-7697996758-2ph6x:/# ls
bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint.d etc lib media opt root sbin sys usr
模拟k8s项目的生命周期相关推荐
- 项目管理一般知识:典型的信息系统项目的生命周期模型
瀑布模型:是一个经典的软件生命周期模型,也叫预测型生命周期模型.完全计划驱动型生命周期.在这个模型里,在项目生命周期的尽早时间,要确定项目范围以及交付此范围所需要的时间和成本. 一般将软件开发分为可行 ...
- K8S之pod生命周期
K8S之pod生命周期 Pod的生命周期是通过Replication Controller来管理的.Pod的生命周期过程包括:通过模板进行定义,然后分配到一个Node上运行,在Pod所含容器运行结束后 ...
- 施工企业数字化管理系统赋能项目全生命周期 强化过程管控精细化
工程项目建造周期长,流程复杂,施工现场作业环境复杂.风险源种类多样,特别是桥隧工程项目,从建造到生产运营的各个环节中,存在较大的危险危害因素,作业中不可预见因素多.难度大,一旦在任何一个环节中安全管理 ...
- 2.7、信息系统项目典型生命周期模型
1.瀑布模型 又称生命周期法.预测型.计划驱动,是结构化方法中最常用的开发模型,本质是"一次通过". 一般将软件开发分为: 定义阶段 可行性分析(计划).需求分析 开发阶段: 软件 ...
- PMP —— 项目完整生命周期
文章目录 PMP -- 项目完整生命周期 前言 一张图项目管理(以前端角度看) 角色介绍 注意事项 详细流程 项目立项 编写需求和需求评审 会议的主要步骤 参会角色思考 汇报工期 编写技术方案 什么是 ...
- 项目全生命周期管理、资产成果沉淀展示、算力资源灵活调度丨ModelWhale 云端协同创新平台全面赋能数据驱动科研工作
新基建的浪潮如火如荼,国家顶层政策的引导不仅支持着由数据驱动各垂直领域中的新兴商业市场,也为相关科研市场的发展提供了众多机遇. 但持续的发展也带来了新的问题,传统基础设施已逐渐不能响应新兴数据驱动研究 ...
- 顶级管理思维-普通外包项目的生命周期
文章出处 ## 普通外包项目的生命周期 ## 市场入驻 #### 市场人员去客户方洽谈,收集客户方需要解决的痛点,进行记录,故而孵化出项目方案 ## 方案阶段 #### 在确认客户方需要建设 ...
- 华天软件牵头科技部项目“产品服务生命周期集成平台研发”PLM取得良好进展
近日,科技部项目"产品服务生命周期集成平台研发",在<中国科技成果>2022.06刊发布. 该项目由山东山大华天软件有限公司(简称:华天软件)牵头,山东大学.清华大学. ...
- k8s 查看pod流量_Kubernetes K8S之Pod生命周期与探针检测
K8S中Pod的生命周期与ExecAction.TCPSocketAction和HTTPGetAction探针检测 主机配置规划 Pod容器生命周期 Pause容器说明 每个Pod里运行着一个特殊的被 ...
最新文章
- 2020年最新Java面试题免费下载!
- python的全局变量能暂存数据吗_Python 中的全局变量 局部变量
- openssl工具的使用以及创建私有CA
- hdu1873 看病要排队-优先队列
- 前端学习(1546):MVC思想
- html文件整体结构,HTML文件基本结构
- 使用particles.js实现网页背景粒子特效
- a标签隐藏真实地址_推荐软件:Clover(窗口标签化工具)
- 基于pyspark 大数据分析_基于阿里云平台的大数据教学案例 —— B站弹幕数据分析...
- javaweb+vue汽车4S店车辆维修管理系统springboot
- 如果更快的访问ESS系统?
- webrtc中GCC拥塞控制模块之码率控制器AimdRateControl
- win32gui恢复小化窗口,前置窗口
- 数据结构算法实现及例题
- iOS开发者账号的区别
- ABAQUS 求解应力强度因子
- 微信小程序 保存图片 wx.saveImageToPhotosAlbum
- python千年虫问题enumerate函数
- python获取经纬度_python之经纬度的获取
- 基于ik分词器和布隆过滤器实现敏感词过滤
热门文章
- 【媒体服务质量监控与QoE】
- IETF:QUIC Version 1 (RFC 9000) 作为标准化版本现已发布
- 直播预告|中台基石腾讯云TStack的正确使用姿势
- 2017第四季度移动行业数据报告
- Google C++单元测试框架(Gtest)系列教程之六——FAQ节选
- 推荐前端性能优化辅助工具Google LightHouse (灯塔)
- Android Studio的Gradle插件文档
- Windows10安装TensorFlow GPU版本
- idea提交spark任务,内存不足,指定JVM内存的解决方法
- Spark2.3.0的DataFrame去哪了,DataSet是哪位?