企业运维----Docker-kubernetes-pod管理、资源清单

21 篇文章 0 订阅
16 篇文章 0 订阅


pod管理

Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip

创建pod并查看相关信息
[root@server2 ~]# kubectl run demo --image=myapp:v1
pod/demo created
[root@server2 ~]# kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
demo   1/1     Running   0          5s
[root@server2 ~]# kubectl describe pod demo 
Name:         demo
Namespace:    default
Priority:     0
Node:         server4/172.25.12.4
Start Time:   Mon, 26 Jul 2021 22:24:09 -0400
Labels:       run=demo
Annotations:  <none>
Status:       Running
IP:           10.244.6.2
IPs:
  IP:  10.244.6.2
Containers:
  demo:
    Container ID:   docker://30e1ffe2d7729b3e9bed5690bfe6fcbe888079f5ff430392b7454bfd035f3234
    Image:          myapp:v1
    Image ID:       docker-pullable://myapp@sha256:9eeca44ba2d410e54fccc54cbe9c021802aa8b9836a0bcf3d3229354e4c8870e
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Mon, 26 Jul 2021 22:24:12 -0400
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-jgdb6 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-jgdb6:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
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  32s   default-scheduler  Successfully assigned default/demo to server4
  Normal  Pulling    32s   kubelet            Pulling image "myapp:v1"
  Normal  Pulled     30s   kubelet            Successfully pulled image "myapp:v1" in 1.480562823s
  Normal  Created    30s   kubelet            Created container demo
  Normal  Started    30s   kubelet            Started container demo
查看flannel环境
[root@server2 ~]# cd /var/run/flannel/
[root@server2 flannel]# cat subnet.env 
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

[root@server2 flannel]# kubectl get pod -o wide
NAME   READY   STATUS    RESTARTS   AGE    IP           NODE      NOMINATED NODE   READINESS GATES
demo   1/1     Running   0          2m7s   10.244.6.2   server4   <none>           <none>
[root@server2 flannel]# curl 10.244.6.2
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

集群会自动创建Pod
[root@server2 ~]# kubectl delete pod demo
pod "demo-5b4fc8bb88-d5fvx" deleted
[root@server2 ~]# kubectl  create  deployment  demo --image=myapp:v1 --replicas=2
deployment.apps/demo created
[root@server2 flannel]# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE     IP           NODE      NOMINATED NODE   READINESS GATES
demo                    1/1     Running   0          4m19s   10.244.6.2   server4   <none>           <none>
demo-5b4fc8bb88-l4pcw   1/1     Running   0          6s      10.244.5.5   server3   <none>           <none>
demo-5b4fc8bb88-zx7jl   1/1     Running   0          6s      10.244.5.4   server3   <none>           <none>
[root@server2 flannel]# kubectl delete pod demo
pod "demo" deleted
[root@server2 flannel]# kubectl delete pod demo-5b4fc8bb88-l4pcw 
pod "demo-5b4fc8bb88-l4pcw" deleted
[root@server2 flannel]# kubectl delete pod demo-5b4fc8bb88-zx7jl 
pod "demo-5b4fc8bb88-zx7jl" deleted

[root@server2 flannel]# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP           NODE      NOMINATED NODE   READINESS GATES
demo-5b4fc8bb88-cztkh   1/1     Running   0          40s   10.244.6.3   server4   <none>           <none>
demo-5b4fc8bb88-hvqkq   1/1     Running   0          24s   10.244.5.6   server3   <none>           <none>

kubectl delete deployment nginx //彻底删除

使用NodePort类型暴露端口,让外部客户端访问Pod
[root@server2 flannel]# kubectl expose deployment demo --port=80 --target-port=80 
service/demo exposed
[root@server2 flannel]# kubectl get all
NAME                        READY   STATUS    RESTARTS   AGE
pod/demo-5b4fc8bb88-cztkh   1/1     Running   0          4m31s
pod/demo-5b4fc8bb88-hvqkq   1/1     Running   0          4m15s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/demo         ClusterIP   10.101.211.24   <none>        80/TCP    14s
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   2d16h

NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/demo   2/2     2            2           6m32s

NAME                              DESIRED   CURRENT   READY   AGE
replicaset.apps/demo-5b4fc8bb88   2         2         2       6m32s

负载均衡
[root@server2 flannel]# curl  10.101.211.24
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@server2 flannel]# curl  10.101.211.24/hostname.html
demo-5b4fc8bb88-cztkh
[root@server2 flannel]# curl  10.101.211.24/hostname.html
demo-5b4fc8bb88-cztkh
[root@server2 flannel]# curl  10.101.211.24/hostname.html
demo-5b4fc8bb88-cztkh
[root@server2 flannel]# curl  10.101.211.24/hostname.html
demo-5b4fc8bb88-hvqkq
[root@server2 flannel]# curl  10.101.211.24/hostname.html
demo-5b4fc8bb88-hvqkq

查看service 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.41.19
IPs:               10.102.41.19
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.141.195:80,10.244.141.196:80
Session Affinity:  None
Events:            <none>

查看rs的信息

[root@server2 ~]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
demo-5b4fc8bb88               2         2         2       2m22s
Pod扩容与缩容
[root@server2 ~]# kubectl  scale  deployment  demo  --replicas=6
deployment.apps/demo scaled
[root@server2 ~]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
demo-5b4fc8bb88-b5jdk               1/1     Running   0          9s
demo-5b4fc8bb88-hws5l               1/1     Running   0          9s
demo-5b4fc8bb88-jmjj5               1/1     Running   0          83m
demo-5b4fc8bb88-pfvgl               1/1     Running   0          9s
demo-5b4fc8bb88-zc4m9               1/1     Running   0          83m
demo-5b4fc8bb88-zl2q6               1/1     Running   0          9s

[root@server2 ~]# kubectl  scale  deployment  demo  --replicas=2
deployment.apps/demo scaled

[root@server2 ~]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
demo-5b4fc8bb88-jmjj5               1/1     Running   0          83m
demo-5b4fc8bb88-zc4m9               1/1     Running   0          83m

更新镜像
[root@server2 ~]# kubectl  set image  deployment demo myapp=myapp:v2
deployment.apps/demo image updated
[root@server2 ~]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
demo-7bd47bddfc-7kgvd               1/1     Running   0          2m52s
demo-7bd47bddfc-qb9q6               1/1     Running   0          42s
[root@server2 ~]# kubectl get pod -o wide
NAME                                READY   STATUS    RESTARTS   AGE     IP               NODE      NOMINATED NODE   READINESS GATES
demo-7bd47bddfc-7kgvd               1/1     Running   0          3m49s   10.244.141.201   server3   <none>           <none>
demo-7bd47bddfc-qb9q6               1/1     Running   0          99s     10.244.141.202   server3   <none>           <none>
myapp-deployment-59dff4cf5d-27bfp   1/1     Running   0          22h     10.244.5.36      server3   <none>           <none>
myapp-deployment-59dff4cf5d-7d5nk   1/1     Running   0          22h     10.244.5.37      server3   <none>           <none>
myapp-deployment-59dff4cf5d-bb8w8   1/1     Running   0          22h     10.244.5.35      server3   <none>           <none>
[root@server2 ~]# curl 10.244.141.201
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>

版本回滚
[root@server2 ~]# kubectl rollout undo deployment demo --to-revision=1
deployment.apps/demo rolled back
[root@server2 ~]# kubectl get pod -o wide
NAME                                READY   STATUS    RESTARTS   AGE   IP               NODE      NOMINATED NODE   READINESS GATES
demo-5b4fc8bb88-8knth               1/1     Running   0          21s   10.244.141.204   server3   <none>           <none>
demo-5b4fc8bb88-9f42m               1/1     Running   0          24s   10.244.141.203   server3   <none>           <none>
[root@server2 ~]# curl 10.244.141.204
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

资源清单

在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
想查看全部属性,可以使用命令

kubectl explain pod
创建
[root@server2 ~]# cd pod/
[root@server2 pod]# vim pod.yaml 
[root@server2 pod]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  containers:
  - name: myapp
    image: myapp:v1

    tty: true
    stdin: true

[root@server2 pod]# kubectl apply -f pod.yaml 
pod/pod-example created
[root@server2 pod]# kubectl get pod
NAME                                READY   STATUS              RESTARTS   AGE
pod-example                         1/1     Running   0          9s

资源清单可以一次性创建多个容器

[root@server2 pod]# vim pod.yaml 
[root@server2 pod]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  containers:
  - name: myapp
    image: myapp:v1

  - name: busybox
    image: busyboxplus:latest
    tty: true
    stdin: true

[root@server2 pod]# kubectl delete -f pod.yaml 
pod "pod-example" deleted                    
[root@server2 pod]# 
[root@server2 pod]# kubectl apply -f pod.yaml 
pod/pod-example created
[root@server2 pod]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
pod-example                         2/2     Running   0          3m28s

容器可以互通

[root@server2 pod]# kubectl attach pod-example -c busybox -it
If you don't see a command prompt, try pressing enter.
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
3: eth0@if59: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 82:a8:33:ba:2e:dd brd ff:ff:ff:ff:ff:ff
    inet 10.244.141.207/32 brd 10.244.141.207 scope global eth0
       valid_lft forever preferred_lft forever
/ # curl localhost
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
/ # 

指定部署主机

指定server4进行部署

[root@server2 pod]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  nodeName: server4
  containers:
  - name: myapp
    image: myapp:v1

  - name: busybox
    image: busyboxplus:latest
    tty: true
    stdin: true
[root@server2 pod]# kubectl delete -f pod.yaml 
pod "pod-example" deleted
[root@server2 pod]# kubectl apply -f pod.yaml 
pod/pod-example created

[root@server2 pod]# kubectl get pod -o wide
NAME                                READY   STATUS    RESTARTS   AGE   IP               NODE      NOMINATED NODE   READINESS GATES
pod-example                         2/2     Running   0          27s   10.244.22.0      server4   <none>           <none>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值