当前位置: 首页 > news >正文

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

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

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

  • github

准备

预备知识

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

工具

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。以下是一个简版的配置文件。

# 该配置文件配置了一个用户 shanyue,一个集群 dev,并且设置了 dev 的 context
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /Users/shanyue/.minikube/ca.crt
    server: https://192.168.99.100:8443
  name: dev
contexts:
- context:
    cluster: dev
    namespace: Business
    user: shanyue
  name: dev
current-context: dev
kind: Config
preferences: {}
users:
- name: shanyue
  user:
    client-certificate: /Users/shanyue/.minikube/client.crt
    client-key: /Users/shanyue/.minikube/client.key

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

# 查看配置
kubectl config view

# 查看集群列表
kubectl config get-clusters

# 查看 Context 列表
kubectl config get-contexts

# 设置当前 Context
kubectl config use-context dev

创建资源

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

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

kubectl create -f app.yaml

kubectl run --image=k8s.gcr.io/echoserver:1.10 --port=8080

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

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

apiVersion: v1
kind: Service
metadata:
  name: app
  namespace: dev
  labels:
    name: app
spec:
  ports:
  - port: 8080
    targetPort: 8080
    protocol: TCP
  selector:
    name: app

---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: app
  namespace: dev
  labels:
    name: app
spec:
  template:
    metadata:
      labels:
        name: app
    spec:
      containers:
      - name: app
        image: node
        imagePullPolicy: Always
        env:
        - name: PORT
          value: "8080"
        ports:
        - containerPort: 8080

访问资源

以下 $app 代表特定 Pod 的 Name

# 获取当前 Context 下所有的 Deployment
kubectl get deployments

# 获取当前 Context 下所有的 Pod
kubectl get pods

# 获取当前 Cluster 下所有的 Pod
kubectl get pods --all-namespaces

# 获取特定 Pod 的状态
kubectl describe pod $app

# 进入某个 Pod 容器里边的命令行
kubectl exec -it $app bash

# 查看某个 Pod 的日志
kubectl logs $app

相关文章:

  • leetcode-868-Binary Gap
  • Spring类字段验证
  • 再谈GC3:GC调优思路与常用工具
  • LaTex in Markdown
  • css系列之关于字体的事
  • Linux 下 项目管理
  • 蛤车1:两个习题,群作用与覆叠空间,N-S定理
  • Vue学习第二天
  • 想熟悉PostgreSQL?这篇就够了
  • Kotlin Weekly 中文周报 —— 103
  • 洛谷P2765 魔术球问题(贪心 最大流)
  • Linux鸟哥(总)
  • JQuery 选择器与过滤器(随手笔记)
  • python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学
  • Django - 一对多数据示例
  • [LeetCode] Wiggle Sort
  • Android 控件背景颜色处理
  • AngularJS指令开发(1)——参数详解
  • angular学习第一篇-----环境搭建
  • HTTP中GET与POST的区别 99%的错误认识
  • IDEA常用插件整理
  • JS+CSS实现数字滚动
  • linux安装openssl、swoole等扩展的具体步骤
  • PHP面试之三:MySQL数据库
  • Sass 快速入门教程
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue2.0项目引入element-ui
  • 阿里云应用高可用服务公测发布
  • 从伪并行的 Python 多线程说起
  • 解析带emoji和链接的聊天系统消息
  • 判断客户端类型,Android,iOS,PC
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 应用生命周期终极 DevOps 工具包
  • Semaphore
  • ​configparser --- 配置文件解析器​
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # Panda3d 碰撞检测系统介绍
  • #pragma预处理命令
  • (3)选择元素——(17)练习(Exercises)
  • (4) PIVOT 和 UPIVOT 的使用
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十一)c52学习之旅-动态数码管
  • (算法)求1到1亿间的质数或素数
  • (转)c++ std::pair 与 std::make
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 中让 Task 支持带超时的异步等待
  • .net反编译工具