资讯专栏INFORMATION COLUMN

k8s 面向应用开发者的基础命令

李涛 / 2042人阅读

摘要:访问资源以下代表特定的获取当前下所有的获取当前下所有的获取当前下所有的获取特定的状态进入某个容器里边的命令行查看某个的日志

随着容器技术的发展,k8s 也越来越火热。在网络上有许多关于 k8s 的文章,但大部分都是关于集群部署相关的,

而这篇文章主要讲作为应用开发者如何使用 k8s 。

github

准备 预备知识

Docker,学习 k8s 之前了解 Docker 是毋庸置疑的。

工具

</>复制代码

  1. brew install kubectl

kubectl 是 k8s 的命令行工具,用于管理 k8s 集群。以上是 Mac 下的安装方法,其它操作系统参考官方文档。当然,你也可以使用 Dashboard 管理容器。

Cluster

k8s 集群,一般生产环境有一个 Cluster 集群,测试环境有一个 Cluster 集群。

Namespace

在一个 Cluster 会有不同的 Namespace,可以区分不同的业务团队。

Pod

Pod 是 k8s 中最小的可部署单元。一般一个 Pod 运行一个 Container,但是有时也会运行多个 Container。类似 docker-compose。

Deployment

Deployment 用来控制 Pod,比如控制一个应用起几个 Pod。

配置文件

关于 k8s 的配置文件位置在 ~/.kube/config。另外也可以使用命令 kubectl config 查看以及更改配置,使用命令更改配置的同时,配置文件也会改变。

配置文件可以指定 ClusterNamespaceUser 的配置,并设置 Context。以下是一个简版的配置文件。

</>复制代码

  1. # 该配置文件配置了一个用户 shanyue,一个集群 dev,并且设置了 dev 的 context
  2. apiVersion: v1
  3. clusters:
  4. - cluster:
  5. certificate-authority: /Users/shanyue/.minikube/ca.crt
  6. server: https://192.168.99.100:8443
  7. name: dev
  8. contexts:
  9. - context:
  10. cluster: dev
  11. namespace: Business
  12. user: shanyue
  13. name: dev
  14. current-context: dev
  15. kind: Config
  16. preferences: {}
  17. users:
  18. - name: shanyue
  19. user:
  20. client-certificate: /Users/shanyue/.minikube/client.crt
  21. client-key: /Users/shanyue/.minikube/client.key

其中 current-context 代表当前上下文,也可以通过以下命令来设置上下文。

</>复制代码

  1. # 查看配置
  2. kubectl config view
  3. # 查看集群列表
  4. kubectl config get-clusters
  5. # 查看 Context 列表
  6. kubectl config get-contexts
  7. # 设置当前 Context
  8. kubectl config use-context dev
创建资源

kubectl create 代表根据文件创建资源,可以是 Deployment,也可以是 Pod。

kubectl run 代表根据镜像创建资源。

</>复制代码

  1. kubectl create -f app.yaml
  2. kubectl run --image=k8s.gcr.io/echoserver:1.10 --port=8080

一般在 CI 中作 deploy 时会使用 kubectl apply 命令,根据配置文件更新资源。

配置文件中可以写多份配置,也可以写 DeploymentService 各种 Kind 配置。以下是以 node 作为服务器语言样例的配置。

</>复制代码

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: app
  5. namespace: dev
  6. labels:
  7. name: app
  8. spec:
  9. ports:
  10. - port: 8080
  11. targetPort: 8080
  12. protocol: TCP
  13. selector:
  14. name: app
  15. ---
  16. apiVersion: extensions/v1beta1
  17. kind: Deployment
  18. metadata:
  19. name: app
  20. namespace: dev
  21. labels:
  22. name: app
  23. spec:
  24. template:
  25. metadata:
  26. labels:
  27. name: app
  28. spec:
  29. containers:
  30. - name: app
  31. image: node
  32. imagePullPolicy: Always
  33. env:
  34. - name: PORT
  35. value: "8080"
  36. ports:
  37. - containerPort: 8080
访问资源

以下 $app 代表特定 Pod 的 Name

</>复制代码

  1. # 获取当前 Context 下所有的 Deployment
  2. kubectl get deployments
  3. # 获取当前 Context 下所有的 Pod
  4. kubectl get pods
  5. # 获取当前 Cluster 下所有的 Pod
  6. kubectl get pods --all-namespaces
  7. # 获取特定 Pod 的状态
  8. kubectl describe pod $app
  9. # 进入某个 Pod 容器里边的命令行
  10. kubectl exec -it $app bash
  11. # 查看某个 Pod 的日志
  12. kubectl logs $app

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27377.html

相关文章

  • k8s 面向应用发者基础命令

    摘要:访问资源以下代表特定的获取当前下所有的获取当前下所有的获取当前下所有的获取特定的状态进入某个容器里边的命令行查看某个的日志 随着容器技术的发展,k8s 也越来越火热。在网络上有许多关于 k8s 的文章,但大部分都是关于集群部署相关的, 而这篇文章主要讲作为应用开发者如何使用 k8s 。 github 准备 预备知识 Docker,学习 k8s 之前了解 Docker 是毋庸置疑的。 工...

    glumes 评论0 收藏0
  • k8s 面向应用发者基础命令

    摘要:访问资源以下代表特定的获取当前下所有的获取当前下所有的获取当前下所有的获取特定的状态进入某个容器里边的命令行查看某个的日志 随着容器技术的发展,k8s 也越来越火热。在网络上有许多关于 k8s 的文章,但大部分都是关于集群部署相关的, 而这篇文章主要讲作为应用开发者如何使用 k8s 。 github 准备 预备知识 Docker,学习 k8s 之前了解 Docker 是毋庸置疑的。 工...

    1treeS 评论0 收藏0
  • 利用K8S技术栈打造个人私有云(连载之:K8S资源控制)

    摘要:将用户命令通过接口传送给,从而进行资源的增删改等操作。要使用编写应用程序,当下大多语言都可以很方便地去实现请求来操作的接口从而控制和查询资源,但本文主要是利用已有的客户端来更加优雅地实现的资源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技术栈打造个人私有云系列文章目录】 利用K8S...

    Reducto 评论0 收藏0
  • 利用K8S技术栈打造个人私有云(连载之:K8S资源控制)

    摘要:将用户命令通过接口传送给,从而进行资源的增删改等操作。要使用编写应用程序,当下大多语言都可以很方便地去实现请求来操作的接口从而控制和查询资源,但本文主要是利用已有的客户端来更加优雅地实现的资源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技术栈打造个人私有云系列文章目录】 利用K8S...

    Render 评论0 收藏0
  • 网易容器云平台微服务化实践(一)

    摘要:本文是网易容器云平台的微服务化实践系列文章的第一篇。网易容器云平台的前身是网易应用自动部署平台,它能够利用云提供的基础设施,实现包括构建和部署一体化在内的整个应用生命周期管理。目前网易云容器服务团队以的方式管理着微服务,每周构建部署次数。 此文已由作者冯常健授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 摘要:网易云容器平台期望能给实施了微服务架构的团队提供完...

    zhjx922 评论0 收藏0

发表评论

0条评论

李涛

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<