Friday, March 17, 2023

Some Kubeletes kubectl

1. 得到kube 的名称空间namespace, 名称空间是用来隔离资源的

kubectl get namespace 

or 

kubectl get ns 


2. 得到pods (应用程序)的列表

kubectl get pods -A 

不带-A是得到默认的应用


3. 得到指定名称空间下的应用

kubectl get pod -n 名称空间名


打印一个更完善的信息 -owide

kubectl get pod -owide


4. 创建和删除名称空间, 删除名称空间会删除名称空间下所有的应用

kubectl create ns 名称空间名

kubectl delete ns 名称空间名

删除命名空间还可以从yaml删,比如删除用配置文件hello.yaml 创建的命名空间

kubectl delete -f hello.yaml 


5. 用yaml创建名称空间, 比如 hello.yaml

apiVersiion: v1

kind: Naqmespace

metadata:

  name: hello


以下两行是固定的写法

apiVersiion: v1

kind: Naqmespace


最后执行命令

kubectl apply -f hello.yaml


6. 创建pot with 容器

kubectl run mynginx --image=nginx 


查看pot运行情况

kubectl describe pod mynginx


查看pot运行在哪个node下,需要运行以下命令,需要在所有的node下运行一遍

docker ps|grep mynginx


删除pot

kubectl detete pod Podname


通过yaml文件创建pot with container, pod.yaml

apiVersion: v1

kind: Pod

matadata:

  label: 

    run: mynginx

  name: mynginx

  namespace: default // 可有可无,如果在dashboard里操作,如果没有选择pod就需要这个

spec:

  containers:

  - image: nginx  // 镜像名

    name: mynginx // 容器名


kubectl apply -f pod.yaml

删除配置文件生成的pod

kubectl delete -f pod.yaml


查看log运行日记

kubectl logs pod名字

kubectl logs mynginx


每个pod -- k8是都会分配一个ip

比如用 kubectl get pod -owide 后会看到pod的IP地址

然后使用 curl 192.168.169.136就能看到pod的内容

集群中的任意一个机器以及任意的应用都能通过pod分配的ip来访问这个pod


进入到pod里的容器去修改

kubectl exec -it mynginx -- /bin/bash

exit // 结束修改


7. 一个pod添加多个容器

apiVersion: v1

kind: Pod

matadata:

  label: 

    run: myapp

  name: myapp

  namespace: default // 可有可无,如果在dashboard里操作,如果没有选择pod就需要这个

spec:

  containers:

  - image: nginx  // 镜像名

    name: mynginx // 容器名

  - image: tomcat: 8.5.68

    name: tomcat


kubectl apply -f multicontainer-pod.yaml


#监视kube

watch -n l kubectl get pod


8. Deployment

kutectl create deploy mytomcat --image=tomcat:8.5.68

kutectl create deploy mytomcat --image=nginx --replicas=3 // replicas 副本, 多副本模式


删除

kubectl delete deploy mytomcat


扩容和缩容

kubectl scale deploy/mynginx --replicas=5 // 如果之前是replicas=2, 那么现在就是5个了,如果设置成 replicas=1, 那么就是缩容。

或者修改yaml

kubectl edit deploy mytomcat


滚动更新

// nginx 是current 镜像image

// nginx:1.16.1 新的要替换的镜像

// --record 记录整个过程

kubectl set image  deploy/my-dep nginx=nginx:1.16.1 --record


deploy 版本回滚 rollout

1)先查看历史记录

kubectl rollout history deploy/my-dep

2) 查看某个历史详情

kubectl rollout undo deploy/my-dep -to-revision=2

3)回滚到上一次

kubectl rollout undo deploy/my-dep

4)或者回滚到指定版本

kubectl rollout undo deploy/my-dep --to-revision=2






No comments: