1 Star 0 Fork 0

tking / micro-service

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
容器应⽤编排一命令式 kubectl.md 6.44 KB
Copy Edit Web IDE Raw Blame History

容器应⽤编排学习笔记一命令式 kubectl

kubectl的核⼼功能在于通过API Server操作Kubernetes的各种资源对象,它⽀持三种操作⽅式(直接命令式、命令式配置清单及声明式配置清单),其中直接命令式(Imperative commands)的使⽤最为简便,是了解Kubernetes集群管理的⼀种有效途径。

本文主要介绍试用 kubectl 编排容器应⽤, 基础操作:应⽤部署、访问、查看、服务暴露和扩缩容等。

kubectl用于运行Kubernetes集群命令的管理工具。

语法运行如下命令:

kubectl [command] [TYPE] [NAME] [flags]

其中command,TYPE,NAME,和flags都是:* command:指定要在一个或多个资源执行的操作,例如操作create,get,describe,delete。* TYPE:指定资源类型Resource types。Resource types会区分大小写,也可以指定单数,复数或缩写的形式。

当在多个资源上执行操作时,可以通过type和name 指定每个资源,或者指定一个或多个file:通过type和name指定的资源:如果它们都是相同的type,就可以对资源进行分组TYPE1 name1 name2 name<#>

  • 例:$ kubectl get pod example-pod1 example-pod2 *单独指定多种资源type:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>
  • 例:$ kubectl get pod/example-pod1 replicationcontroller/example-rc1 *使用一个或多个file来指定资源:-f file1 -f file2 -f file<#> 使用YAML而不是JSON,因为YAML往往更容易掌握也对用户更友好,特别是对于配置文件。

更多命令参考:

http://docs.kubernetes.org.cn/61.html

K8s进阶第一步

  1. 快速入门: 运行并展示一个应用程序

创建Deployment控制器

通过合⽤的Controller类的资源(如Deployment或ReplicationController)创建并管控Pod对象以运⾏特定的应⽤程序,如Nginx或tomcat等。⽆状态( stateless)应⽤的部署和控制通常使⽤Deployment控制器进⾏,⽽有状态应⽤则需要使⽤StatefulSet控制器

# kubectl create deployment demoapp --image="ikubernetes/demoapp:v1.0"
deployment.apps/demoapp created
  • --image选项指定的镜像运⾏Pod中的容器,
  • --dry-run选项可⽤于命令的测试运⾏,

它在default名称空间中创建了⼀个名为myapp的Deployment控制器对象,并由它基于指定的镜 像⽂件创建了⼀个Pod对象。

打印资源对象的相关信息

# kubectl get deployment
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
demoapp   0/1     1            0           39s
  • NAME:资源对象的名称。
  • DESIRED:⽤户期望由当前控制器管理的Pod对象副本的精确数量。
  • CURRENT:当前控制器已有的Pod对象的副本数量。
  • UP-TO-DATE:更新到最新版本定义的Pod对象的副本数量,在控 制器的滚动更新模式下,它表⽰已经完成版本更新的Pod对象的副本数 量。
  • AVAILABLE:当前处于可⽤状态的Pod对象的副本数量,即可正 常提供服务的副本数。
  • AGE:Pod的存在时长。

查看Pod资源对象属性

# kubectl get pods -l app=demoapp -o wide
NAME                       READY   STATUS              RESTARTS   AGE    IP       NODE          NOMINATED NODE   READINESS GATES
demoapp-5748b7ccfc-xmxlw   0/1     ContainerCreating   0          101s   <none>   tk-note1   <none>           <none>
  • READY:Pod中的容器进程初始化完成并能够正常提供服务时即为就绪状态,此字段⽤于记录处于就绪状态的容器数量。
  • STATUS:Pod的当前状态,其值可能是Pending、Running、 Succeeded、Failed和Unknown等其中之⼀。
  • RESTARTS:Pod对象可能会因容器进程崩溃、超出资源限额等原因发⽣故障问题⽽被重启,此字段记录了它重启的次数。
  • IP:Pod的IP地址,其通常由⽹络插件⾃动分配。
  • NODE:创建时,Pod对象会由调度器调度⾄集群中的某节点运⾏, 此字段即为节点的相关标识信息。

创建Service对象

Service 为弹性变动且存在生命周期的Pod对象提供了一个固定的访问接口,用于服务发现和服务访问

# kubectl create service nodeport demoapp --tcp=80
service/demoapp created

列出Service对象的相关信息

# kubectl get service
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
demoapp      NodePort    10.111.225.105   <none>        80:31772/TCP   83s
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        167m

打印PODS对象的详细信息

POD_NAME=demoapp-5748b7ccfc-xmxlw
kubectl describe pods $POD_NAME

输出:

Name: demoapp-5748b7ccfc-xmxlw Namespace: default Priority: 0 Node: tk-note1/192.168.1.114 Start Time: Fri, 21 Jan 2022 07:36:49 +0000 Labels: app=demoapp pod-template-hash=5748b7ccfc Annotations: Status: Pending IP: IPs: Controlled By: ReplicaSet/demoapp-5748b7ccfc

todo-测试

创建一个自主式Pod对象并直接接入其交互式接口

 kubectl run client-pod --image="ikubernetes/admin-toolbox:v1.0" --rm -it -- command -- /bin/sh

在client-pod 中测试Service的对象的名称解析功能

nslookup -query=A demoapp.default.svc.cluster.local 

在client-pod 中通过curl对此前创建的Service对象名称发起访问请求

 curl http://demoapp.default 

kubectl run demoapp --image="ikubernetes/demoapp:v1.0"

Debug 方法

https://kubernetes.io/zh/docs/tasks/debug-application-cluster/debug-running-pod/

K8s进阶 todo LIst

大山要一天天移,技术一天天积累

  1. 快速入门: 运行并展示一个应用程序
  2. 容器的配置与启动: 配置容器的公共参数
  3. 部署可持续运行的容器
  4. 链接应用程序: 将应用程序展示给客户和用户
  5. 在生产环境中是用容器
  6. 部署管理
  7. 应用程序的自我检查和调试
    1. 使用Kubernetes的Web用户界面
    2. 日志
    3. 监控
    4. .通过exec命令进入容器
    5. 通过代理连接容器
    6. 通过接口转发连接容器

参考:

Comment ( 0 )

Sign in to post a comment

1
https://gitee.com/lucktk/study-nodes.git
git@gitee.com:lucktk/study-nodes.git
lucktk
study-nodes
micro-service
master

Search