1、k8s的常用命令
# 查看node信息,no是缩写
kubectl get node|no
# 查看命名空间信息,ns是缩写
kubectl get namespace|ns
# 查看pod信息,po是缩写
kubectl -n zone2 get pod|po -o wide
# 查看所有ns的pod信息
kubectl get pod -o wide --all-namespaces
# 查看service信息,svc是缩写
kubectl -n zone2 get services|svc
# 查看pod的详细信息
kubectl -n zone2 describe pod pod_name
# 查看pod日志,-f是动态模式,类似tail -f
kubectl -n zone2 logs pod_name -f
# 驱逐pod,保留daemonsets
kubectl drain node-name --ignore-daemonsets --delete-local-data --force
2、master节点常用操作
# 获取pod列表
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
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容器,-a显示已经停止的容器
docker ps [-a]
# 用已知镜像开启一个docker,-d是daemon模式,不加-d,退出后docker自动停止, --name可以自定义名称,可以不加
docker run -dt image_id|myapp:ver1 --name=test-lius
# 停止一个docker
docker stop docker_id
# 删除容器, -f为强制模式,如果docker是run的状态,不加-f会提示有在运行的docker,需先docker stop之后才可以删除
docker rm docker_id [-f]
# docker [-u root] exec -ti docker_id /bin/bash # 进入一个docker,-u指定用户
# 显示docker的资源使用情况,如cpu、内存使用率,exec进入后,看到的资源是node的
docker stats docker_id
# 查看docker容器详情
docker inspect docker_id
# node执行docker命令,不能加-d(后台操作没有返回),-t(the input device is not a TTY)
docker ps |egrep -v '/pause|IMAGE' |awk '{print $1}' |while read CID; do
echo "========================= $CID ========================"
docker exec -i $CID bash -c "netstat -anlp |grep :3717 |wc -l" < /dev/zero
done
# 启动MYSQL容器
docker run --privileged=true --name mysql8 -v /data/mysql_for_docker/data/:/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=youguess -d mysql:latest
# 直接下载镜像并用tty的形式进入容器
docker run -ti dockerhub.liutianfeng.com/lius/test-lius:20230216130337 bash
Docker查看资源
docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
5、镜像操作
# 查看系统内的镜像列表
docker images
# 删除镜像[标签],如果image_id对应的镜像不唯一(有的镜像有不同的tag),只能使用myapp:ver1这类格式删除镜像[标签]。
docker rmi img_id|myapp:ver1
# 给myapp:ver1打一个ver2的标签,如果image_id唯一,myapp:ver1可以用docker_id替换
docker tag myapp:ver1 myapp:ver2
# 导入镜像,两种方式皆可
docker load -i imgs/myapp_ver1.tar.gz | docker load < imgs/myapp_ver1.tar.gz
# 导出镜像,如果iamge_id唯一,可以用image_id,但是标签信息可能会缺失。导出的是tar格式,需要gzip压缩后才是tar.gz文件
docker save myapp:ver1|image_id -o imgs/myapp_ver1.tar
6、镜像补丁
# vim 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可以修改补丁文件的权限,一般很必要
# 制作tag为ver2的镜像
docker build -t myapp:ver2 . // .是当前目录
# 导出新的镜像
docker save myapp:ver2 ../imgs/myapp_ver2.tar
# 注意,制作镜像的目录里面,不要有不相关的文件和历史导出的镜像,否则制作过程中会加载当前目录的所有文件,导致镜像前期读取内容过多,时间变长。
Ingress
# 修改Ingress配置
kubectl edit cm -n ingress-nginx nginx-configuration
转载请注明:liutianfeng.com » K8S和Docker常用基础操作