kubernetes基础知识和基础命令(k8s入门)

本文介绍Kubernetes的基础概念及操作,包括集群搭建、应用部署、服务暴露、扩缩容及镜像更新等关键步骤。通过实战演示,帮助读者快速掌握Kubernetes的基本使用。
  • 整理自官方新手教程,因此使用的是minikube。
  • 官方教程链接: https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/

集群(cluster)

一个 Kubernetes 集群包含两种类型的资源:

  • Master 调度整个集群
  • Nodes 负责托管正在运行的应用
    在 Kubernetes 上部署应用时,你告诉 Master 启动应用容器。 Master 就编排容器在集群的 Node 上运行。
    在这里插入图片描述

1 集群基础命令

1.1 创建集群

minikube start

1.2 查看kubectl和k8s版本

## client 是kubectl,server是k8s
kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.4", GitCommit:"e87da0bd6e03ec3fea7933c4b5263d151aafd07c", GitTreeState:"clean", BuildDate:"2021-02-18T16:12:00Z", GoVersion:"go1.15.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-13T13:20:00Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

1.3.查看节点信息

$ kubectl get nodes
NAME       STATUS   ROLES                  AGE    VERSION
minikube   Ready    control-plane,master   4m9s   v1.20

2 部署应用

一旦运行了 Kubernetes 集群,就可以在其上部署容器化应用程序。k8s不会直接创建应用,而是通过控制器(controller)。最常用的就是Deployment。创建 Deployment 后,Kubernetes master 将应用程序实例调度到集群中的各个节点上。
创建应用程序实例后,Deployment 控制器会持续监视这些实例。 如果托管实例的节点关闭或被删除,则 Deployment 控制器会将该实例替换为群集中另一个节点上的实例。 这提供了一种自我修复机制来解决机器故障维护问题。
在这里插入图片描述

2.1 创建Deployment

kubectl create deployment deployname --image=image_name

2.2 查看Deployment

kubectel get deployments

3 pods和nodes

创建 Deployment 时, Kubernetes 添加了一个 Pod 来托管你的应用实例。
Pod 包括一个或多个应用容器,以及这些容器的一些共享资源。这些资源包括:

  • 共享存储,比如volumn
  • 网络,每个pod有唯一的集群 IP 地址
  • 每个容器如何运行的信息,例如容器镜像版本或要使用的端口号。

节点(nodes)是 Kubernetes 中的参与计算的机器,可以是虚拟机或物理计算机,具体取决于集群。
每个 Kubernetes 节点至少运行:

  • Kubelet,负责 Kubernetes 主节点和工作节点之间通信的过程; 它管理 Pod 和机器上运行的容器。
  • 容器(如 Docker)负责从仓库中提取容器镜像,解压缩容器以及运行应用程序。

pod和node的关系:pod 必须运行在 节点上。一个节点可以有多个 pod 。
在这里插入图片描述

3.1 查看pods列表

kubectl get pods

3.2 查看pods详细信息(控制器、容器、镜像等)

kubectl describe pods

3.3查看pods日志

kubectl logs podname

3.4 在pod里运行命令

3.4.1. 查看环境

kubectl exec podname -- env

3.4.2 进入容器里的命令行环境

kubectl exec podname -- bash

4 访问应用

4.1. 新建service,将容器的8080端口映射到节点的端口

kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080

4.2 查看新建的service

kubectl get services
NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes            ClusterIP   10.96.0.1        <none>        443/TCP          19m
kubernetes-bootcamp   NodePort    10.103.177.108   <none>        8080:31624/TCP   62s

4.3 使用标签来映射pods

kubectl label pods $POD_NAME version=v1

4.4 查看pods的标签

kubectl describe pods $POD_NAME

在这里插入图片描述

4.5 查找特定标签的pods

kubectl get pods -l version=v1

4.6.删除service

kubectl delete service -l app=kubernetes-bootcamp

6 扩缩容

扩展 Deployment 将创建新的 Pods,并将资源调度请求分配到有可用资源的节点上,

6.1 扩容

kubectl scale deployments/deploymentname --replicas=4

6.2 扩容结果

$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   4/4     4            4           106s

6.3 扩容后的pods名

$ kubectl get pods
NAME                                  READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-fb5c67579-8whlr   1/1     Running   0          2m22s
kubernetes-bootcamp-fb5c67579-fgflh   1/1     Running   0          107s
kubernetes-bootcamp-fb5c67579-wp8vs   1/1     Running   0          107s
kubernetes-bootcamp-fb5c67579-x2t4q   1/1     Running   0          107s

6.3 缩容 (用同样的命令)

kubectl scale deployments/kubernetes-bootcamp --replicas=2

6.4 查看缩容结果

$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   2/2     2            2           4m12s

7 镜像更新和回滚

滚动更新(rolling update)允许以下操作:

  • 将应用程序从一个环境提升到另一个环境(通过容器镜像更新)
  • 回滚到以前的版本
  • 持续集成和持续交付应用程序,无需停机

7.1 更新镜像

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=newimage

7.2 查看镜像是否已更新

可以查看pods的镜像名是否已更新
kubectl describe pods

还可以用查看滚动更新的状态命令

$ kubectl rollout status deployments/kubernetes-bootcamp
deployment "kubernetes-bootcamp" successfully rolled out

7.3 回滚

kubectl rollout undo deployments/kubernetes-bootcamp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值