文章目录

  • 模拟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?

创建过程

  1. kubelet取代了master执行任务创建资源
  2. port是k8s集群内部访问service的端口,targetPort是pod的端口都是80
  3. 通过kube-proxy,实现流量从service到pod的转发
  4. 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项目的生命周期相关推荐

  1. 项目管理一般知识:典型的信息系统项目的生命周期模型

    瀑布模型:是一个经典的软件生命周期模型,也叫预测型生命周期模型.完全计划驱动型生命周期.在这个模型里,在项目生命周期的尽早时间,要确定项目范围以及交付此范围所需要的时间和成本. 一般将软件开发分为可行 ...

  2. K8S之pod生命周期

    K8S之pod生命周期 Pod的生命周期是通过Replication Controller来管理的.Pod的生命周期过程包括:通过模板进行定义,然后分配到一个Node上运行,在Pod所含容器运行结束后 ...

  3. 施工企业数字化管理系统赋能项目全生命周期 强化过程管控精细化

    工程项目建造周期长,流程复杂,施工现场作业环境复杂.风险源种类多样,特别是桥隧工程项目,从建造到生产运营的各个环节中,存在较大的危险危害因素,作业中不可预见因素多.难度大,一旦在任何一个环节中安全管理 ...

  4. 2.7、信息系统项目典型生命周期模型

    1.瀑布模型 又称生命周期法.预测型.计划驱动,是结构化方法中最常用的开发模型,本质是"一次通过". 一般将软件开发分为: 定义阶段 可行性分析(计划).需求分析 开发阶段: 软件 ...

  5. PMP —— 项目完整生命周期

    文章目录 PMP -- 项目完整生命周期 前言 一张图项目管理(以前端角度看) 角色介绍 注意事项 详细流程 项目立项 编写需求和需求评审 会议的主要步骤 参会角色思考 汇报工期 编写技术方案 什么是 ...

  6. 项目全生命周期管理、资产成果沉淀展示、算力资源灵活调度丨ModelWhale 云端协同创新平台全面赋能数据驱动科研工作

    新基建的浪潮如火如荼,国家顶层政策的引导不仅支持着由数据驱动各垂直领域中的新兴商业市场,也为相关科研市场的发展提供了众多机遇. 但持续的发展也带来了新的问题,传统基础设施已逐渐不能响应新兴数据驱动研究 ...

  7. 顶级管理思维-普通外包项目的生命周期

    文章出处 ##    普通外包项目的生命周期 ##  市场入驻 #### 市场人员去客户方洽谈,收集客户方需要解决的痛点,进行记录,故而孵化出项目方案 ##  方案阶段 #### 在确认客户方需要建设 ...

  8. 华天软件牵头科技部项目“产品服务生命周期集成平台研发”PLM取得良好进展

    近日,科技部项目"产品服务生命周期集成平台研发",在<中国科技成果>2022.06刊发布. 该项目由山东山大华天软件有限公司(简称:华天软件)牵头,山东大学.清华大学. ...

  9. k8s 查看pod流量_Kubernetes K8S之Pod生命周期与探针检测

    K8S中Pod的生命周期与ExecAction.TCPSocketAction和HTTPGetAction探针检测 主机配置规划 Pod容器生命周期 Pause容器说明 每个Pod里运行着一个特殊的被 ...

最新文章

  1. 2020年最新Java面试题免费下载!
  2. python的全局变量能暂存数据吗_Python 中的全局变量 局部变量
  3. openssl工具的使用以及创建私有CA
  4. hdu1873 看病要排队-优先队列
  5. 前端学习(1546):MVC思想
  6. html文件整体结构,HTML文件基本结构
  7. 使用particles.js实现网页背景粒子特效
  8. a标签隐藏真实地址_推荐软件:Clover(窗口标签化工具)
  9. 基于pyspark 大数据分析_基于阿里云平台的大数据教学案例 —— B站弹幕数据分析...
  10. javaweb+vue汽车4S店车辆维修管理系统springboot
  11. 如果更快的访问ESS系统?
  12. webrtc中GCC拥塞控制模块之码率控制器AimdRateControl
  13. win32gui恢复小化窗口,前置窗口
  14. 数据结构算法实现及例题
  15. iOS开发者账号的区别
  16. ABAQUS 求解应力强度因子
  17. 微信小程序 保存图片 wx.saveImageToPhotosAlbum
  18. python千年虫问题enumerate函数
  19. python获取经纬度_python之经纬度的获取
  20. 基于ik分词器和布隆过滤器实现敏感词过滤

热门文章

  1. 【媒体服务质量监控与QoE】
  2. IETF:QUIC Version 1 (RFC 9000) 作为标准化版本现已发布
  3. 直播预告|中台基石腾讯云TStack的正确使用姿势
  4. 2017第四季度移动行业数据报告
  5. Google C++单元测试框架(Gtest)系列教程之六——FAQ节选
  6. 推荐前端性能优化辅助工具Google LightHouse (灯塔)
  7. Android Studio的Gradle插件文档
  8. Windows10安装TensorFlow GPU版本
  9. idea提交spark任务,内存不足,指定JVM内存的解决方法
  10. Spark2.3.0的DataFrame去哪了,DataSet是哪位?