K8S和Docker常用基础操作

系统+安全 Liemer_Lius 45℃

1、k8s的常用命令

kubectl get node|no  # 查看node信息,no是缩写
kubectl get namespace|ns  # 查看命名空间信息,ns是缩写
kubectl -n zone2 get pod|po -o wide  # 查看pod信息,po是缩写
kubectl get pod -o wide --all-namespaces    # 查看所有ns的pod信息
kubectl -n zone2 get services|svc  # 查看service信息,svc是缩写
kubectl -n zone2 describe pod pod_name  # 查看pod的详细信息
kubectl -n zone2 logs pod_name -f   # 查看pod日志,-f是动态模式,类似tail -f

2、master节点常用操作

kubectl -n zone2 get pod -o wide |grep ^myapp |awk '{print $1}' > lst/myapp.list  # 获取pod列表
kubectl -n zone2 cp ./files/patch.jar myapp-h89H:/usr/local/myapp/files/patch.jar   # 考本文件到远端pod
kubectl -n zone2 cp myapp-h89H:/usr/local/myapp/files/patch.jar ./files/patch.jar   # 将远端pod的文件拷贝到本地
kubectl -n zone2 exec -ti myapp-h89H -- md5sum /usr/local/myapp/files/patch.jar     # 在远端pod执行命令

3、常用脚本

kubectl -n zone2 get pod -o wide |grep ^myapp |awk '{print $1}' > lst/myapp.list   # 先获取列表
vi remote.sh   # 遍历列表,拷贝脚本到远端,并执行脚本
#!/bin/bash
for POD_NAME in `cat lst/myapp.list`; do
    echo "==================================================${POD_NAME}=================================================="
    kubectl -n zone2 cp ./files/check_file.sh ${POD_NAME}:/tmp/check_file.sh
    kubectl -n zone2 exec -ti ${POD_NAME} -- nohup sh /tmp/check_file.sh &
done

4、Docker常用命令

docker ps [-a]  # 查看docker容器,-a显示已经停止的容器
docker run -dt image_id|myapp:ver1   # 用已知镜像开启一个docker,-d是daemon模式,不加-d,退出后docker自动停止
docker stop docker_id                # 停止一个docker
docker rm docker_id [-f]             # -f为强制模式,如果docker是run的状态,不加-f会提示有在运行的docker,需先docker stop之后才可以删除
docker [-u root] exec -ti docker_id /bin/bash    # 进入一个docker,-u指定用户
docker stats docker_id               # 显示docker的资源使用情况,如cpu、内存使用率。exec进入后,看到的资源是node的。

5、镜像操作

docker images   # 查看系统内的镜像列表
docker rmi img_id|myapp:ver1         # 删除镜像[标签],如果image_id对应的镜像不唯一(有的镜像有不同的tag),只能使用myapp:ver1这类格式删除镜像[标签]。
docker tag myapp:ver1 myapp:ver2     # 给myapp:ver1打一个ver2的标签,如果image_id唯一,myapp:ver1可以用docker_id替换
docker load -i imgs/myapp_ver1.tar.gz | docker load < imgs/myapp_ver1.tar.gz    # 导入镜像,两种方式皆可
docker save myapp:ver1|image_id -o imgs/myapp_ver1.tar    # 导出镜像,如果iamge_id唯一,可以用image_id,但是标签信息可能会缺失。导出的是tar格式,需要gzip压缩后才是tar.gz文件

6、镜像补丁

vi Dockerfile   # 编辑Dockerfile,默认识别的固定文件名,当前目录
FROM myapp:ver1   # 基准镜像,必须保证docker images列表中有这个标签的镜像
USER app    # 指定默认用户
COPY --chown=myapp:users ./pkgs/my_patch.jar /home/myapp/opt/work/app1/app1.jar    # --chown可以修改补丁文件的权限,一般很必要

docker build -t myapp:ver2 .   # 制作tag为ver2的镜像
docker save myapp:ver2 ../imgs/myapp_ver2.tar    # 导出新的镜像
# 注意,制作镜像的目录里面,不要有不相关的文件和历史导出的镜像,否则制作过程中会加载当前目录的所有文件,导致镜像前期读取内容过多,时间变长。

 

 

转载请注明:skelchina.com » K8S和Docker常用基础操作

喜欢 (2)