k8s自学记录三(资源对象概念等)

本文介绍了Kubernetes中的基本概念,如Pod作为最小部署单元,Deployment用于自动化管理Pod的部署和更新,ReplicaSet确保Pod副本的稳定性,Ingress管理集群外部访问,以及如何使用kubectl和yaml进行资源操作和配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述

图by b站up主“自学自讲”

  • pod

​ Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。

​ 一个Pod封装一个应用容器(也可以有多个容器),存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。Pod代表部署的一个单位:Kubernetes 中单个应用的实例,它可能由单个容器或多个容器共享组成的资源。

  • lable

是附加到 Kubernetes 对象(比如 Pod)上的键值对。 标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义。 标签可以用于组织和选择对象的子集。标签可以在创建时附加到对象,随后可以随时添加和修改。 每个对象都可以定义一组键/值标签。每个键对于给定对象必须是唯一的。

  • deployment

一个 Deployment 为 PodReplicaSet 提供声明式的更新能力。

你负责描述 Deployment 中的目标状态,而 Deployment 控制器(Controller) 以受控速率更改实际状态, 使其变为期望状态。你可以定义 Deployment 以创建新的 ReplicaSet,或删除现有 Deployment, 并通过新的 Deployment 收养其资源。

  • ReplicaSet(RS)

ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。 因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性。

  • ingress

Ingress :是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。

  • service

Service 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法 ,TCP。

  • 网络解决方案

在整个kubernetes集群里,pod都是分布在不同的主机上的,为了实现这些pod的跨主机通信所以我们必须要安装CNI网络插件

例如Calico 、flannel

kubectl命令

root@k8s-master:~/helm3# kubectl  --help 
kubectl controls the Kubernetes cluster manager.

 Find more information at: https://kubernetes.io/docs/reference/kubectl/

Basic Commands (Beginner):
  create          Create a resource from a file or from stdin
  expose          Take a replication controller, service, deployment or pod and expose it as a new
Kubernetes service
  run             Run a particular image on the cluster
  set             Set specific features on objects
#获取资源对象的相关属性
Basic Commands (Intermediate):
  explain         Get documentation for a resource 
  get             Display one or many resources
  edit            Edit a resource on the server
  delete          Delete resources by file names, stdin, resources and names, or by resources and label selector #基于yaml的资源对象删除

部署

Deploy Commands:
  rollout         Manage the rollout of a resource  #部署和回滚
  scale           Set a new size for a deployment, replica set, or replication controller #扩容
  autoscale       Auto-scale a deployment, replica set, stateful set, or replication controller
Troubleshooting and Debugging Commands:
  describe        Show details of a specific resource or group of resources  #查看资源对象创建过程
  logs            Print the logs for a container in a pod
  attach          Attach to a running container
  exec            Execute a command in a container
  port-forward    Forward one or more local ports to a pod
  proxy           Run a proxy to the Kubernetes API server
  cp              Copy files and directories to and from containers
  auth            Inspect authorization
  debug           Create debugging sessions for troubleshooting workloads and nodes
  events          List events

Advanced Commands:
  diff            Diff the live version against a would-be applied version
  apply           Apply a configuration to a resource by file name or stdin #基于资源清单创建资源对象
  patch           Update fields of a resource
  replace         Replace a resource by file name or stdin
  wait            Experimental: Wait for a specific condition on one or many resources
  kustomize       Build a kustomization target from a directory or URL

pod

创建pod
kubectl run

以nginx为例

#创建
kubectl run nginx --image=nginx
#查看pods
root@k8s-master:/etc/containerd# kubectl  get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          7m24s
#接入
root@k8s-master:/etc/containerd# kubectl exec -it nginx -- /bin/bash
root@nginx:/# 
#查看详细信息
root@k8s-master:/etc/containerd# kubectl get pod -o wide
NAME    READY   STATUS    RESTARTS   AGE     IP              NODE     NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          9m15s   10.168.61.200   k8s-01   <none>           <none>
#测试
curl 10.168.61.200
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
..................

注意10.168.61.200为pod的ip,只有k8s集群内部的节点有权访问

yaml

基于资源清单文件创建

kubectl run nginx --image=nginx --dry-run=client -o yaml >pod_create.yaml
vi pod_create.yaml

apiVersion: v1
kind: Pod
metadata:
#  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
#    resources: {}
#  dnsPolicy: ClusterFirst
#  restartPolicy: Always
#status: {}

kubectl  apply -f pod_create.yaml 
root@k8s-master:/data/kubernetes/pod# kubectl get pods -o wide
NAME     READY   STATUS    RESTARTS   AGE   IP               NODE     NOMINATED NODE   READINESS GATES
nginx    1/1     Running   0          37m   10.168.61.200    k8s-01   <none>           <none>
nginx1   1/1     Running   0          40s   10.168.165.196   k8s-03   <none>           <none>

deployment

pod的自动化部署管理

kubectl create deployment
root@k8s-master:~# kubectl create deployment my-nginx --image=nginx
deployment.apps/my-nginx created                
root@k8s-master:~# kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-7fbf685c4d-kkcqt   1/1     Running   0          12s
nginx                       1/1     Running   0          65m
nginx1                      1/1     Running   0          29m
root@k8s-master:~# kubectl get deployments.apps 
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
my-nginx   1/1     1            1           26s
root@k8s-master:~# kubectl  get rs
NAME                  DESIRED   CURRENT   READY   AGE
my-nginx-7fbf685c4d   1         1         1       2m11s
root@k8s-master:~# 

yml

kubectl create deployment my-nginx --image=nginx --dry-run=client -o yaml >deployment_creat.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: my-nginx
  name: my-nginx
spec:
  replicas: 1    #控制pod数量
  selector:
    matchLabels:
      app: my-nginx   #deployment通过该标签管理pod
  strategy: {}
  template:
    metadata:
      labels:
        app: my-nginx  #pod标签
    spec:
      containers:
      - image: nginx
        name: nginx

从上面内容可以看出,deployment主要通过1.rc控制数量2.标签选择器3.pod模板来实现的

资源对象扩缩容/修改

edit --原有资源对象的基础上修改

kubectl edit deployments.apps my-nginx-deploy

scale --直接动态调整数量

kubectl scale deployment my-nginx-deploy --replicas=10
kubectl scale deployment my-nginx-deploy --replicas=1

set --直接动态调整属性

kubectl set image deployment my-nginx-deploy nginx=xxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值