Linux企业运维之k8s-yaml编写

一、Pod管理

• Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群
中运行的一个进程,每个pod都有一个唯一的ip。
• 一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间
共享IPC、Network和UTC namespace。

[root@k8s1 ~]# kubectl run demo --image=nginx
pod/demo created
[root@k8s1 ~]# kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
demo   1/1     Running   0          55s
[root@k8s1 ~]# kubectl get pod -o wide
NAME   READY   STATUS    RESTARTS   AGE     IP           NODE   NOMINATED NODE   READINESS GATES
demo   1/1     Running   0          4m46s   10.244.2.2   k8s3   <none>           <none>

kubectl scale deployment demo --replicas=1这是它的一个控制器,可以控制pod的数量,我们可以对其进行扩容和缩容,根据我们的需求

[root@k8s1 ~]# kubectl create deployment demo --image=nginx
deployment.apps/demo created
[root@k8s1 ~]# kubectl get pod
NAME                    READY   STATUS              RESTARTS   AGE
demo-6c54f77c95-tkvfv   0/1     ContainerCreating   0          13s
[root@k8s1 ~]# kubectl get pod
NAME                    READY   STATUS              RESTARTS   AGE
demo-6c54f77c95-tkvfv   0/1     ContainerCreating   0          17s
[root@k8s1 ~]# kubectl get pod
NAME                    READY   STATUS              RESTARTS   AGE
demo-6c54f77c95-tkvfv   0/1     ContainerCreating   0          23s
[root@k8s1 ~]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
demo-6c54f77c95-tkvfv   1/1     Running   0          28s
[root@k8s1 ~]# kubectl delete pod demo-6c54f77c95-tkvfv 
pod "demo-6c54f77c95-tkvfv" deleted
[root@k8s1 ~]# kubectl get pod
NAME                    READY   STATUS              RESTARTS   AGE
demo-6c54f77c95-h2db7   0/1     ContainerCreating   0          3s
[root@k8s1 ~]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
demo-6c54f77c95-h2db7   1/1     Running   0          15s
[root@k8s1 ~]# kubectl scale deployment demo --replicas=3
deployment.apps/demo scaled
[root@k8s1 ~]# kubectl get pod
NAME                    READY   STATUS              RESTARTS   AGE
demo-6c54f77c95-2f7gh   0/1     ContainerCreating   0          7s
demo-6c54f77c95-h2db7   1/1     Running             0          49s
demo-6c54f77c95-m2tj6   0/1     ContainerCreating   0          7s
[root@k8s1 ~]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
demo-6c54f77c95-2f7gh   1/1     Running   0          21s
demo-6c54f77c95-h2db7   1/1     Running   0          63s
demo-6c54f77c95-m2tj6   1/1     Running   0          21s

kubectl expose deployment demo --port=80 --target-port=80可以将其发布出去,并且暴露端口,svc可以起到pod的负载均衡的作用,由于现在我们只有一个pod,所以在这里体现不出来

[root@k8s1 ~]# kubectl expose deployment demo --port=80 --target-port=80
service/demo exposed
[root@k8s1 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
demo         ClusterIP   10.102.98.54   <none>        80/TCP    10s
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP   9h
[root@k8s1 ~]# kubectl describe svc demo 
Name:              demo
Namespace:         default
Labels:            app=demo
Annotations:       <none>
Selector:          app=demo
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.102.98.54
IPs:               10.102.98.54
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.2.4:80
Session Affinity:  None
Events:            <none>
[root@k8s1 ~]# kubectl delete svc demo 
service "demo" deleted

二、资源清单

pod.yaml/中的就是标准化的资源定义,

[root@k8s1 ~]# kubectl delete -f pod.yaml 
pod "demo" deleted
[root@k8s1 ~]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: demo
  name: demo
spec:
  containers:
  - image: nginx
    name: demo
    resources: {}

我们对其做资源限制,比如限制cpu或者内存,这个点在以后会比较重要

[root@k8s1 ~]# kubectl describe pod demo 
Name:             demo
Namespace:        default
Priority:         0
Service Account:  default
Node:             k8s3/192.168.1.13
Start Time:       Sun, 13 Nov 2022 02:26:50 +0800
Labels:           run=demo
Annotations:      <none>
Status:           Running
IP:               10.244.2.5
IPs:
  IP:  10.244.2.5
Containers:
  demo:
    Container ID:   docker://827337d551044d248111a4729644b11d9f259abe373f4b72ac7df36286012385
    Image:          nginx
    Image ID:       docker-pullable://nginx@sha256:bab399017a659799204147065aab53838ca6f5aeed88cf7d329bc4fda1d2bac7
    Port:           80/TCP
    Host Port:      80/TCP
    State:          Running
      Started:      Sun, 13 Nov 2022 02:27:06 +0800
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     200m
      memory:  512Mi
    Requests:
      cpu:        100m
      memory:     200Mi
    Environment:  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-xs6lb (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-xs6lb:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  63s   default-scheduler  Successfully assigned default/demo to k8s3
  Normal  Pulled     48s   kubelet            Container image "nginx" already present on machine
  Normal  Created    48s   kubelet            Created container demo
  Normal  Started    47s   kubelet            Started container demo

资源清单

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

打标签以及添加资源选择器

我们可以打标签并且在yaml文件中增加标签选择器

[root@k8s1 ~]# kubectl label nodes k8s3 disktype=ssd
spec:
  hostNetwork: true
  nodeSelector:
    disktype: ssd
  containers:
  - image: nginx
    name: demo
    resources:
      limits:
        cpu: 200m
        memory: 512Mi
      requests:
        cpu: 100m
        memory: 200Mi
    imagePullPolicy: IfNotPresent

[root@k8s1 ~]# kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
demo   1/1     Running   0          6m32s
[root@k8s1 ~]# kubectl get pod -o wide
NAME   READY   STATUS    RESTARTS   AGE     IP             NODE   NOMINATED NODE   READINESS GATES
demo   1/1     Running   0          6m36s   192.168.1.13   k8s3   <none>           <none>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes中,可以使用YAML格式来编写资源对象的配置文件YAML是一种简洁的非标记性语言,以数据为中心,使用空白、缩进和换行来组织数据。以下是一些关于YAML文件编写的详细信息: 1. 大小写敏感:YAML是大小写敏感的,因此在编写YAML文件时需要注意大小写的正确使用。 2. 使用缩进表示层级关系:YAML使用缩进来表示数据的层级关系,一般使用空格键进行缩进。Tab键是不被允许的。 3. 缩进的空格数目不重要:相同层级的元素只需要左侧对齐即可,一般情况下使用两个空格进行缩进。 4. 使用#表示注释:在YAML文件中,可以使用#符号来添加注释,注释内容从#字符开始一直到行尾都会被解析器忽略。 5. 特殊字符的使用:在YAML中,一些特殊字符如冒号、逗号、短横杠等需要进行特殊处理,通常在这些字符后面会缩进一个空格。 6. 对象的表示:对象使用键值对的方式表示,使用冒号结构进行分隔,例如`animal: pets`。 7. 另一种对象的写法:YAML还支持将所有键值对写在一行内的行内对象表示法,例如`hash: {name: Steve, foo: bar}`。 8. 数组的表示:数组使用连词线开头的行来表示,每个元素占据一行,例如: ``` - Cat - Dog - Goldfish ``` 9. 子成员是数组:如果数据结构的子成员是一个数组,可以在该项下面缩进一个空格,例如: ``` - - Cat - Dog - Goldfish ``` 10. 文件示例:下面是一个KubernetesYAML文件的示例,用于创建一个名为"kubernetes-dashboard"的命名空间: ``` apiVersion: v1 kind: Namespace metadata: name: kubernetes-dashboard ``` 以上是关于KubernetesYAML文件编写的一些详细信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [kubernetes-----YAML文件编写详解](https://blog.csdn.net/qq_42761527/article/details/105897465)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [k8s集成kubernetes-dashboard可视化界面](https://blog.csdn.net/crazy1013/article/details/126575777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值