博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向业务开发者的 k8s 基本命令
阅读量:5931 次
发布时间:2019-06-19

本文共 2343 字,大约阅读时间需要 7 分钟。

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

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

准备

预备知识

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

工具

brew install kubectl复制代码

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

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# 设置当前 Contextkubectl config use-context dev复制代码

创建资源

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

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

kubectl create -f app.yamlkubectl 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 下所有的 Deploymentkubectl get deployments# 获取当前 Context 下所有的 Podkubectl get pods# 获取当前 Cluster 下所有的 Podkubectl get pods --all-namespaces# 获取特定 Pod 的状态kubectl describe pod $app# 进入某个 Pod 容器里边的命令行kubectl exec -it $app bash# 查看某个 Pod 的日志kubectl logs $app
本文转自掘金-

转载地址:http://kautx.baihongyu.com/

你可能感兴趣的文章
让我们荡起双桨,Android 小船波浪动画
查看>>
ApacheCN 翻译活动进度公告 2019.2.18
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
Polar码引发舆论狂欢 5G标准远未定局
查看>>
IntersectionObserver + Custom Elements 实现图片懒加载(滚动加载)/点击重试
查看>>
KSImageNamed-Xcode-master
查看>>
memcache
查看>>
Struts2参数知识点
查看>>
tomcat 8.0虚拟机配置文档
查看>>
轻松实现基于Heartbeat的高可用web服务集群
查看>>
分析y一款APP
查看>>
pxc群集搭建
查看>>
JS中加载cssText延时
查看>>
常用的脚本编程知识点
查看>>
坐标转换convertRect
查看>>
XILINX_zynq_详解(6)
查看>>
ubuntu安装LDAP
查看>>
计算机网络术语总结4
查看>>
新手小白 python之路 Day3 (string 常用方法)
查看>>