三、k8s快速入门之Kubectl 命令基础操作

⭐️创建Pod
[root@master ~]# kubectl run nginx --image=harbor.tanc.com/library/ngix:latest 
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be rmoved in a future version. Use kubectl run --generator=run-pod/v1 or kbectl create instead.
deployment.apps/nginx created

⭐️查看容器状态

[root@master ~]# kubectl run nginx --image=harbor.tanc.com/library/ngix:latest 
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be rmoved in a future version. Use kubectl run --generator=run-pod/v1 or kbectl create instead.
deployment.apps/nginx created         
⭐️开放端口
kubectl expose [pod名] --port [端口号]     
⭐️查看服务service
kubectl get svc              

⭐️ 增加副本数

kubectl scale deployment [pod名] --repolicas=[副本数]

⭐️删除pod-如果你的删除后你设定的副本数大于你当前pod数,rs就会给你在重新创建一个

kubectl delete pod [pod名]   

🌟 实列

创建nginx pod,端口映射为80-->8000,期待副本数为3个

kubectl run nginx --image=harbor.tanc.com/library/nginx:latest 
kubectl scale deployment nginx --replicas=3
kubectl expose deployment nginx --port=8000 --target-port=80

查看一下有几个副本数

[root@master ~]# kubectl get pod -o wide
NAME                     READY   STATUS     RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
nginx-6b48575596-bsdt2   1/1     Running   0          16m   10.244.2.3   node2   <none>           <none>
nginx-6b48575596-fbdjf   1/1     Running   0          22m   10.244.2.2   node2   <none>           <none>
nginx-6b48575596-g892j   1/1     Running   0          22m   10.244.1.3   node1   <none>           <none>

删除一个副本试一下

[root@master ~]# kubectl delete pod nginx-6b48575596-g892j
pod "nginx-6b48575596-g892j" deleted

在来查看一下 它又重新运行了一个

[root@master ~]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6b48575596-bsdt2   1/1     Running   0          22m
nginx-6b48575596-fbdjf   1/1     Running   0          27m
nginx-6b48575596-wzmdp   1/1     Running   0          44s

由于我们映射了一个端口号我们可以试着访问一下

[root@master ~]# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP           NODE    NOMINATED NODE   READINESS GATES
nginx-6b48575596-bsdt2   1/1     Running   0          23m     10.244.2.3   node2   <none>           <none>
nginx-6b48575596-fbdjf   1/1     Running   0          29m     10.244.2.2   node2   <none>           <none>
nginx-6b48575596-wzmdp   1/1     Running   0          2m34s   10.244.1.4   node1   <none>           <none>
⭐️增加\减少副本期望数
kubectl scale deploy [deploy名] --replica=[副本数]
⭐️隔离和恢复隔离
kubectl cordon <node_name>
kubectl uncordon <node_name>
⭐️驱逐
kubectl drain <node>
🌟 滚动更新

创建一个deploy在创建三个nginx:v1pod

[root@master test]# cat apply.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: dp-test1
  labels:
    test: dp1
spec:
  replicas: 3
  template:
    metadata:
      name: web
      labels:
       app: webapp
    spec:
      containers:
      - name: nginx-app
        image: harbor.tanc.com/library/nginx:v1
        imagePullPolicy: IfNotPresent
        ports:
        - name: web
          containerPort: 80

执行

kubectl apply -f apply.yaml --record=true

–record的作用是将当前命令记录到revision中,可以知道每个revision对应的是哪个配置文件。

查看deploy信息

kubectl describe dp-test1

把镜像换成v2在试一下

 kubectl describe deploy dp-test1
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  10m   deployment-controller  Scaled up replica set dp-test1-688f6479b to 3
  Normal  ScalingReplicaSet  7s    deployment-controller  Scaled up replica set dp-test1-b5bc484f9 to 1
  Normal  ScalingReplicaSet  7s    deployment-controller  Scaled down replica set dp-test1-688f6479b to 2
  Normal  ScalingReplicaSet  7s    deployment-controller  Scaled up replica set dp-test1-b5bc484f9 to 2
  Normal  ScalingReplicaSet  5s    deployment-controller  Scaled down replica set dp-test1-688f6479b to 1
  Normal  ScalingReplicaSet  5s    deployment-controller  Scaled up replica set dp-test1-b5bc484f9 to 3
  Normal  ScalingReplicaSet  5s    deployment-controller  Scaled down replica set dp-test1-688f6479b to 0
  上面的日志信息就描述了滚动升级的过程:
① 启动一个新版Pod。
② 把旧版Pod数量降为2。
③ 再启动一个新版,数量变为2。
④ 把旧版Pod数量降为1。
⑤ 再启动一个新版,数量变为3。
⑥ 把旧版Pod数量降为0。

查看revision历史记录,

kubectl rollout history deployment dp-test1
deployment.extensions/dp-test1 
REVISION  CHANGE-CAUSE
1         kubectl create --filename=apply.yaml --record=true
2         kubectl create --filename=apply.yaml --record=true      

回滚

kubectl rollout undo deployment  dp-test1 --to-revision=1 ##这样他就会到v1了

查看

[root@master test]# kubectl get deploy -o wide
NAME       READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                             SELECTOR
dp-test1   3/3     3            3           27m   nginx-app    harbor.tanc.com/library/nginx:v1   app=webapp
⭐️ 进入容器
kubectl exec -it [pod]

​ 未仅允许禁止转载

### Kubernetes快速入门教程 #### 1. 基本概念介绍 Kubernetes 是一种开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是几个核心的概念: - **滚动升级**: 这是一种更新应用的方式,在不中断服务的情况下逐步替换旧版本的应用实例为新版本[^1]。 - **Horizontal Pod Autoscaler (HPA)**: HPA 控制器能够依据 CPU 使用率或其他自定义指标动态调整 Pod 的副本数,从而实现资源使用的优化[^2]。 - **Cluster Architecture**: - Master 节点作为 Control Plane, 主要负责管理和调度整个集群中的工作负载[^3]。 - Node 节点则构成了 Data Plane, 承载实际运行的工作负载容器。 - **Registry**: 容器镜像是构建容器基础,而这些镜像通常存储在一个称为 Registry 的地方。虽然它不是 Kubernetes 集群的一部分,但在生产环境中拥有一个私有 Registry 十分重要。 #### 2. 初步操作指南 ##### 创建并管理 Deployment Deployment 是 Kubernetes 中最常用的抽象对象之一,用来声明性地描述一组相同 Pods 应该如何被创建以及维护其状态。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 ``` 上述 YAML 文件定义了一个名为 `nginx-deployment` 的 Deployment 对象,该对象会启动个 Nginx 实例,并监听端口 80。 可以通过以下命令将其应用于集群: ```bash kubectl apply -f deployment.yaml ``` ##### 查看当前运行的服务与 Pod 状态 为了监控已部署的应用程序的状态,可以使用如下 kubectl 命令获取实时信息: ```bash # 显示所有的 pod kubectl get pods # 获取 services 列表 kubectl get svc # 描述特定 pod 的详细状况 kubectl describe pod <pod-name> ``` ##### 设置 Horizontal Pod Autoscaler 下面的例子展示了如何基于 CPU 使用量配置 HPA 来自动伸缩上面提到的 Nginx Deployment: ```bash kubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=1 --max=10 ``` 这条指令设置了当平均 CPU 使用率达到 50% 时触发扩增逻辑,最小保留 1 个副本,最大允许达到 10 个副本。 #### 结论 以上只是 Kubernetes 功能的一个简单概述及其基本的操作方法。随着深入学习,还可以探索更多高级特性如网络策略(Network Policies), 存储卷(Storage Volumes)等主题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值