首页
关于
留言
接口
搜索
资讯
技术
资源
悦读
杂记
首页
登录
登录
搜索
emer
累计撰写
58
篇文章
累计收到
0
条评论
首页
栏目
资讯
技术
资源
悦读
杂记
首页
登录
页面
首页
关于
留言
接口
包含标签 【Kubernetes】 的文章
2023-11-24
Kubernetes 常用命令汇总
# 通过文件名或标准输入创建资源。kubectl create # 读取指定文件内容,进行创建。(配置文件可指定json,yaml文件)。 kubectl create -f 配置文件 # 创建指定文件内容,创建并指定服务版本。(配置文件可指定json,yaml文件)。 kubectl create -f 配置文件 --edit --output-version=版本号 -o json # 将一个资源公开为一个新的Kubernetes服务,暴露服务。kubectl expose # 创建Kubernetes 资源类型,并添加暴露端口。 kubectl expose 资源类型 资源名称 --port=暴露端口 --target-port=容器端口 # 创建Kubernetes service 服务,并添加暴露端口。 kubectl expose service 资源名称 --port=暴露端口 --target-port=容器端口 --name=创建服务名称 # 创建Kubernetes ,并添加UDP暴露端口,使用默认容器端口。 kubectl expose 资源类型 资源名称 --port=暴露端口 --protocol=udp --name=创建服务名称 # 创建Kubernetes服务,根据yaml文件,并添加暴露端口。(配置文件可指定json,yaml文件)。 kubectl expose -f 配置文件 --port=暴露端口 --target-port=容器端口# 创建并运行一个特定的镜像,可能是副本。创建一个deployment或job管理创建的容器。kubectl run # 创建一个镜像,运行。 kubectl run 容器名 --image=镜像名 # 创建一个镜像,运行。并启用暴露端口。 kubectl run 容器名 --image=镜像名 --port=暴露端口 # 创建一个镜像,运行。并引入变量。 kubectl run 容器名 --image=镜像名 --env=“变量” # 创建一个镜像,运行。并引入标签。 kubectl run 容器名 --image=镜像名 --labels="key=value,env=prod" # 创建一个镜像,运行。并设置副本数。默认1。 kubectl run 容器名 --image=镜像名 --replicas=副本数 # 创建一个镜像,运行。并添加-i-t访问容器终端。并设置重启策略(Never不重启)。 kubectl run -i -t 容器名 --image=镜像名 --restart=重启策略 # 创建一个镜像,运行。并指定容器内执行指定命令。 kubectl run 容器名 --image=镜像名 --command -- 指定命令删# 通过文件名、标准输入、资源名称或标签选择器来删除资源kubectl delete # 删除指定资源。 kubectl delete 资源类型 资源名 # 删除所有指定资源。 kubectl delete 资源类型 -all # 通过指定文件删除指定资源。(配置文件.json .yaml) kubectl delete -f 配置文件# 维护期间排除容器名kubectl drain # 排除指定容器名。 kubectl drain 容器名改# 配置应用资源。修改现有应用程序资源。kubectl set # 更新pod内的环境变量。 kubectl set env 资源类型 资源名称 添加变量=值 # 更新pod镜像。 kubectl set image 资源类型 资源名称 容器名=升级镜像版本 # 更新pod内的资源。 kubectl set resources 资源类型 资源名称 [请求——限制= & =请求][选项] # 通过配置文件更新pod内的资源。(配置文件.json .yaml) kubectl set resources -f 配置文件# 使用默认的编辑器编辑一个资源。kubectl edit # 动态更新服务配置参数。 kubectl edit 资源类型 资源名称# 管理资源的发布。kubectl rollout # 回滚到上一个版本。 kubectl rollout undo 资源类型 资源名称 # 指定版本回滚。 kubectl rollout undo 资源类型 资源名称 --to-revision=3 # 查看当前的资源状态。 kubectl rollout status 资源类型 资源名称 # 查看历史修订版本 kubectl rollout history 资源类型 资源名称 # 查看指定历史修订版本 kubectl rollout history 资源类型 资源名称 --revision=版本数# 执行指定复制控制的滚动更新。kubectl rolling-update # 滚动更新v1版本,通过json配置文件跟新到v2版本。 kubectl rolling-update 服务名称-v1 -f 服务名称-v2.json # 滚动更新v1版本,到v2,并指定更新镜像。 kubectl rolling-update 服务名称-v1 服务名称-v2 --image=image:v2# 扩容或缩容Pod数量,Deployment、ReplicaSet、RC或Jobkubectl scale # 扩容缩容副本数。 kubectl scale --replicas=副本数 资源类型 资源名称 # 扩容缩容副本数。对多个资源扩容。 kubectl scale --replicas=副本数 资源类型/资源名称1 资源类型/资源名称2 # 扩容缩容副本数。如果当前副本数为N个就扩容为Y个。 kubectl scale --current-replicas=副本数N --replicas=副本数Y 资源类型 资源名称# 创建一个自动选择扩容或缩容并设置Pod数量kubectl autoscale # 设置该资源类型的副本数自动扩容到相关值 kubectl autoscale 资源类型 资源名称 --min=最小值 --max=最大值 # 设置该资源类型的副本数自动扩容到相关值。并根据CPU阈值扩容缩容。 kubectl autoscale 资源类型 资源名称 --max=最大值 --最小值 --cpu-percent=80# 修改证书资源。kubectl certificate# 标记节点不可调度kubectl cordon # 标记指定节点不可调度 kubectl cordon 节点名# 标记节点可调度kubectl uncordon # 标记指定节点可调度 kubectl uncordon 节点名 # 更新一个或多个节点上的nodes。kubectl taint # 执行命令到容器。kubectl exec # 执行指定命令到容器中。 kubectl exec 容器名 命令 # 分配伪终端已宿主级向容器添加命令。 kubectl exec 容器名 -- bash -c “命令” # 进入指定节点容器内。 kubectl exec 容器名 -it bash# 转发一个或多个本地端口到一个pod。kubectl port-forward # 将宿主级端口转发到容器中。 kubectl port-forward 容器名 宿主级端口:容器端口# 为kubernetes API Server启动服务代理kubectl proxy# 拷贝文件或目录到容器中。kubectl cp # 附加到一个进程到一个已经运行的容器。kubectl attach # 进入到一个运行的容器终端。 kubectl attach 容器名 # 通过文件名或标准输入对资源应用配置kubectl apply# 更新部署配置文件信息(配置文件格式.json .yaml)kubectl apply -f 配置文件 # 使用补丁修改、更新资源的字段。kubectl patch# 通过文件名或标准输入替换一个资源。kubectl replace # 重新创建配置文件内的资源 。配置文件可是(.yaml、.json) kubectl replace -f 配置文件 --force # 不同的API版本之间转换配置文件。YAML和JSON格式都接受。kubectl convert# 更新资源上的标签kubectl label# 在一个或多个资源上更新注释。kubectl annotate# 修改kubeconfig文件(用于访问API,比如配置认证信息)kubectl config查# 显示一个或多个资源kubectl get # 查看组件运行状态 kubectl get componentstatus # 查看节点加入信息 kubectl get node # 查看所有资源 kubectl get all # 查看pods状态 kubectl get pods # 查看pods及运行节点位置,查看更多信息 kubectl get pods -o wide # 查看pods下其他命名空间(kube-system等) kubectl get pods -n 命名空间 # 查看endpoints节点 kubectl get endpoints # 查看sservice暴露宿主级访问地址描述信息 kubectl get service # 根据标签查找资源描述信息。--output=wide查看更多信息。 kubectl get 资源类型 --selector="key=value" --output=wide # 查看资源所有标签 kubectl get 资源类型 --show-labels # 根据标签查看资源 kubectl get 资源类型 -l app=example # 查看指定命名空间的资源 kubectl get 资源类型 --namespace=kube-system # 查看命名空间 kubectl get ns# 文档参考资料,可查看yaml文件字段指令含义。kubectl explain # 获得资源的特定字段的文档 kubectl explain pods.spec.containers # 获得资源及其字段的文档 kubectl explain pods# 显示集群信息kubectl cluster-info # 显示详细集群信息 kubectl cluster-info dump# 显示资源(CPU/Memory/Storage)使用。需要Heapster运行。kubectl top# 显示特定资源或资源组的详细信。kubectl describe # 查看资源详细信息 kubectl describe 资源类型 资源名称 # 指定标签。详细信息。 kubectl describe 资源类型 -l name=标签名 # 查看node资源使用详情信息 kubectl describe nodes NodeIP# 在od或指定的资源中容器打印日志。如果od只有一个容器,容器名称是可选的。kubectl logs # 查看指定节点服务日志。 kubectl logs 容器名 # 查看指定容器日志。 kubectl logs pod 节点名 -c 容器名 # 查看指定容器日志。实时查看。 kubectl logs pod 容器名 -f # 通过标签查看容器日志 kubectl logs -l key=value其他# 检查认证授权kubectl auth# 用于实现kubectl工具自动补全kubectl completion# 执行实现自动补全动作source <(kubectl completion bash)# 打印受支持的API版本kubectl api-versions# 所有命令帮助。kubectl help# 运行一个命令行插件。kubectl plugin# 打印客户端和服务版本信息kubectl versionkubernetes官网https://kubernetes.io/kubernetes官方文档其他命令https://v1-8.docs.kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
2023年-11月-24日
338 阅读
0 评论
技术
2023-10-28
Kubernetes docker Containerd ctr、crictl、nerdctl -容器和镜像操作命令工具【转】
一、概述作为接替 Docker 运行时的 Containerd 在早在 Kubernetes1.7 时就能直接与 Kubelet 集成使用,只是大部分时候我们因熟悉 Docker,在部署集群时采用了默认的 dockershim。在V1.24起的版本的 kubelet 就彻底移除了dockershim,改为默认使用Containerd了,当然也使用 cri-dockerd 适配器来将 Docker Engine 与 Kubernetes 集成。可以参考官方文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#docker二、Containerd 常见命令操作更换 Containerd 后,以往我们常用的 docker 命令也不再使用,取而代之的分别是 crictl 和 ctr 两个命令客户端。crictl 是遵循 CRI 接口规范的一个命令行工具,通常用它来检查和管理kubelet节点上的容器运行时和镜像。ctr 是 containerd 的一个客户端工具。ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,从结果显而易见你可以认为 crictl 是用于 k8s 的。一般来说你某个主机安装了 k8s 后,命令行才会有 crictl 命令。而 ctr 是跟 k8s 无关的,你主机安装了 containerd 服务后就可以操作 ctr 命令。使用crictl命令之前,需要先配置/etc/crictl.yaml如下:runtime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: false或者使用命令:crictl config runtime-endpoint unix:///run/containerd/containerd.sockcrictl config image-endpoint unix:///run/containerd/containerd.sockdocker ctr crictl三种命令对比图由于 Containerd 也有 namespaces 的概念,对于上层编排系统的支持,ctr 客户端 主要区分了 3 个命名空间分别是k8s.io、moby和default,以上我们用crictl操作的均在k8s.io命名空间,使用ctr 看镜像列表就需要加上-n 参数。crictl 是只有一个k8s.io命名空间,但是没有-n 参数。【温馨提示】ctr images pull 拉取的镜像默认放在default,而 crictl pull 和 kubelet 默认拉取的镜像都在 k8s.io 命名空间下。所以通过ctr导入镜像的时候特别注意一点,最好指定命名空间。注意-n不能放在命令最后面,下面几行查看的镜像是一样的ctr -n=k8s.io image lsctr -n k8s.io image lscrictl 没有-n参数,操作都在k8s.io命名空间下。crictl image lscrictl imagescrictl image list = ctr -n=k8s.io image listcrictl image ls = ctr -n=k8s.io image lscrictl images = ctr -n=k8s.io image listcrictl images = ctr -n=k8s.io image ls使用ctr命令指定命名空间导入镜像ctr -n=k8s.io image import dashboard.tar查看镜像,可以看到可以查询到了crictl images三、containerd 客户端工具 nerdctl推荐使用 nerdctl,使用效果与 docker 命令的语法一致,github 下载链接:https://github.com/containerd/nerdctl/releases精简 (nerdctl–linux-amd64.tar.gz): 只包含 nerdctl完整 (nerdctl-full–linux-amd64.tar.gz): 包含 containerd, runc, and CNI 等依赖nerdctl 的目标并不是单纯地复制 docker 的功能,它还实现了很多 docker 不具备的功能,例如延迟拉取镜像(lazy-pulling)、镜像加密(imgcrypt)等。具体看 nerdctl。延迟拉取镜像功能可以参考这篇文章:Containerd 使用 Stargz Snapshotter 延迟拉取镜像https://icloudnative.io/posts/startup-containers-in-lightning-speed-with-lazy-image-distribution-on-containerd/1)安装 nerdctl(精简版)wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz解压tar -xf nerdctl-0.22.2-linux-amd64.tar.gzln -s /opt/k8s/nerdctl/nerdctl /usr/local/bin/nerdctl2)安装 nerdctl(完整版,这里不装)wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-full-0.22.2-linux-amd64.tar.gztar -xf nerdctl-full-0.16.0-linux-amd64.tar.gz -C /usr/local/cp /usr/local/lib/systemd/system/*.service /etc/systemd/system/启动服务 buildkitsystemctl enable buildkit containerd --nowsystemctl status buildkit containerd3)安装 buildkit 支持构建镜像buildkit GitHub 地址:https://github.com/moby/buildkit使用精简版 nerdctl 无法直接通过 containerd 构建镜像,需要与 buildkit 组全使用以实现镜像构建。当然你也可以安装上面的完整 nerdctl;buildkit 项目是 Docker 公司开源出来的一个构建工具包,支持 OCI 标准的镜像构建。它主要包含以下部分:服务端 buildkitd,当前支持 runc 和 containerd 作为 worker,默认是 runc;客户端 buildctl,负责解析 Dockerfile,并向服务端 buildkitd 发出构建请求。buildkit 是典型的C/S 架构,client 和 server 可以不在一台服务器上。而 nerdctl 在构建镜像方面也可以作为 buildkitd 的客户端。https://github.com/moby/buildkit/releaseswget https://github.com/moby/buildkit/releases/download/v0.10.4/buildkit-v0.10.4.linux-amd64.tar.gztar -xf buildkit-v0.10.4.linux-amd64.tar.gz -C /usr/local/配置 buildkit 的启动文件,可以从这里下载:https://github.com/moby/buildkit/tree/master/examples/systemdbuildkit 需要配置两个文件/usr/lib/systemd/system/buildkit.socketcat > /usr/lib/systemd/system/buildkit.socket <<EOF[Unit]Description=BuildKitDocumentation=https://github.com/moby/buildkit[Socket]ListenStream=%t/buildkit/buildkitd.sockSocketMode=0660[Install]WantedBy=sockets.targetEOF/usr/lib/systemd/system/buildkit.servicecat > /usr/lib/systemd/system/buildkit.service << EOF[Unit]Description=BuildKitRequires=buildkit.socketAfter=buildkit.socketDocumentation=https://github.com/moby/buildkit[Service]Replace runc builds with containerd buildsExecStart=/usr/local/bin/buildkitd --addr fd://[Install]WantedBy=multi-user.targetEOFsystemctl daemon-reloadsystemctl enable buildkit --now四、实战操作1)修改 containerd 配置文件配置如下:[plugins.“io.containerd.grpc.v1.cri”.registry]config_path = “”[plugins."io.containerd.grpc.v1.cri".registry.auths] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."myharbor-minio.com".tls] insecure_skip_verify = true #跳过认证 ca_file = "/etc/containerd/myharbor-minio.com/ca.crt" [plugins."io.containerd.grpc.v1.cri".registry.configs."myharbor-minio.com".auth] username = "admin" password = "Harbor12345" [plugins."io.containerd.grpc.v1.cri".registry.headers] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."myharbor-minio.com"] endpoint = ["https://myharbor-minio.com"]重新加载配置systemctl daemon-reload重启containerdsystemctl restart containerd注意:这个配置文件是给crictl和kubelet使用,ctr是不可以用这个配置文件的,ctr 不使用 CRI,因此它不读取 plugins."io.containerd.grpc.v1.cri"配置2)ctr 拉取推送镜像推送镜像到harborctr --namespace=k8s.io images push myharbor-minio.com/bigdata/minio:2022.8.22-debian-11-r0 --skip-verify --user admin:Harbor12345–namespace=k8s.io 指定命名空间,不是必须,根据环境而定–skip-verify 跳过认证–user 指定harbor用户名及密码ctr images pull --user admin:Harbor12345 --tlscacert=/etc/containerd/myharbor-minio.com/ca.crt myharbor-minio.com/bigdata/minio:2022.8.22-debian-11-r0不想-u user:password 每次必须使用 ctr pull/ctr push, 可以使用nerdctl 。3)镜像构建cat > Dockerfile <<EOFFROM nginx:alpineRUN echo ‘Hello Nerdctl From Containerd’ > /usr/share/nginx/html/index.htmlEOF然后在文件所在目录执行镜像构建命令:不加-n指定命名空间,crictl看不到,kubelet也不能使用它,默认在default命名空间下nerdctl -n k8s.io build -t nginx:nerctl -f ./Dockerfile .参数解释-t:指定镜像名称. :当前目录Dockerfile-f:指定Dockerfile路径–no-cache:不缓存4)打标签 tagcrictl没有tag命令,只能使用nerdctl和ctr,必须指定命名空间,要不然kubelet无法使用。ctr -n k8s.io i tagnerdctl -n k8s.io tag nginx:nerctl myharbor-minio.com/bigdata/nginx:nerctlctr -n k8s.io tag nginx:nerctl myharbor-minio.com/bigdata/nginx:nerctl查看镜像nerdctl -n k8s.io images myharbor-minio.com/bigdata/nginx:nerctl5)将镜像推送到 Harbor第一种情况:http方式,配置如下:以下两个哪个都可以mkdir -p /etc/docker/certs.d/myharbor-minio.com:443mkdir -p /etc/containerd/certs.d/myharbor-minio.com:443cat > /etc/containerd/certs.d/myharbor-minio.com:443/hosts.toml <<EOFserver = “https://docker.io”[host.“http://myharbor-minio.com:80”]capabilities = [“pull”, “resolve”,“push”]skip_verify = trueca = “ca.crt” #相对路径ca = “/opt/auth/ca.crt” #绝对路径ca = [“/opt/auth/ca.crt”]ca = [“ca.crt”]client = [[“/opt/auth/nginx.cclinux.cn.crt”, “/opt/auth/nginx.cclinux.cn.key”]]EOF第二种情况:https方式,配置如下:以下两个哪个都可以mkdir -p /etc/docker/certs.d/myharbor-minio.com:443mkdir -p /etc/containerd/certs.d/myharbor-minio.com:443cat > /etc/containerd/certs.d/myharbor-minio.com:443/hosts.toml <<EOFserver = “https://docker.io”[host.“https://myharbor-minio.com:443”]capabilities = [“pull”, “resolve”,“push”]skip_verify = trueca = “ca.crt” #相对路径ca = “/opt/auth/ca.crt” #绝对路径ca = [“/opt/auth/ca.crt”]ca = [“/etc/containerd/myharbor-minio.com/ca.crt”]client = [[“/opt/auth/nginx.cclinux.cn.crt”, “/opt/auth/nginx.cclinux.cn.key”]]EOF通过 nerdctl 登录 harborecho Harbor12345 | nerdctl login --username “admin” --password-stdin myharbor-minio.com:443nerdctl login --username “admin” --password Harbor12345 myharbor-minio.com:443登出nerdctl logout开始将镜像推送到 harbor推送到Harbor–insecure-registry skips verifying HTTPS certs, and allows falling back to plain HTTPnerdctl --insecure-registry --namespace=k8s.io push myharbor-minio.com/bigdata/nginx:nerctlctr --namespace=k8s.io images push myharbor-minio.com/bigdata/nginx:nerctl --skip-verify --user admin:Harbor12345–namespace=k8s.io 指定命名空间,跟-n一样,不是必须,根据环境而定–skip-verify 跳过认证–user 指定harbor用户名及密码————————————————版权声明:本文为CSDN博主「稚辉君.MCA.P8.JAVA高级架构师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/m0_37843156/article/details/128277966
2023年-10月-28日
728 阅读
0 评论
技术