面向业务开发者的 k8s 基本命令

文章目录

[隐藏]

  • 准备
    • 预备知识
    • 工具
    • Cluster
    • Namespace
    • Pod
    • Deployment
  • 配置文件
    • 创建资源
    • 访问资源

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

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

github: https://github.com/shfshanyue/blog/tree/master/Articles/Kubenetes-Commands

准备

预备知识

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 查看以及更改配置,使用命令更改配置的同时,配置文件也会改变。

配置文件可以指定 Cluster,Namespace,User 的配置,并设置 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 命令,根据配置文件更新资源。

配置文件中可以写多份配置,也可以写 Deployment,Service 各种 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  

原文出处:juejin -> https://juejin.im/post/5b53255de51d451949092cba

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。
超哥软件库 » 面向业务开发者的 k8s 基本命令