k8s pod分类、核心组件、网络模型、kubectl常用命令
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[root@master ~]# kubectl config
选项:
Available Commands:
current-context 显示 current_context
delete-cluster 删除 kubeconfig 文件中指定的集群
delete-context 删除 kubeconfig 文件中指定的 context
delete-user Delete the specified user from the kubeconfig
get-clusters 显示 kubeconfig 文件中定义的集群
get-contexts 描述一个或多个 contexts
get-users Display users defined in the kubeconfig
rename-context Renames a context from the kubeconfig file.
set 设置 kubeconfig 文件中的一个单个值
set-cluster 设置 kubeconfig 文件中的一个集群条目
set-context 设置 kubeconfig 文件中的一个 context 条目
set-credentials 设置 kubeconfig 文件中的一个用户条目
unset 取消设置 kubeconfig 文件中的一个单个值
use-context 设置 kubeconfig 文件中的当前上下文
view 显示合并的 kubeconfig 配置或一个指定的 kubeconfig 文件
Usage:
kubectl config SUBCOMMAND [options]
Use “kubectl --help” for more information about a given command.
Use “kubectl options” for a list of global command-line options (applies to all commands).
[root@master ~]# kubectl config view
//集群
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.129.250:6443
name: kubernetes
//集群上下文
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
//当前上下文
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
//客户端认证
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
| 类型 | 命令 | 描述 |
| — | :-- | :-- |
| 基础命令 | create
expose
run
expose
set
explain
get
edit
delete | 通过文件名或标准输入创建资源;
为Deployment,Pod创建Service;
在集群中运行一个特定的镜像;
在对象上设置特定的功能;
文档参考资料;
显示一个或多个资源;
使用系统编辑器编辑一个资源;
通过文件名,标准输入,资源名称或标签选择器来删除资源 |
| 部署命令 | rollout
rolling-update
scale
autoscale | 管理Deployment,Daemonset资源的发布(例如状态、发布记录、回滚等);
滚动升级,仅限ReplicationController;
对Deployment、ReplicaSet、RC或Job资源扩容或缩容Pod数量;
为Deploy,RS,RC配置自动伸缩规则(依赖metrics-server和hpa) |
| 集群管理命令 | certificate
cluster-info
top
cordon
uncordon drain
taint | 修改证书资源;
显示集群信息;
查看资源利用率(依赖metrics-server);
标记节点不可调度;
标记节点可调度;
驱逐节点上的应用,准备下线维护;
修改节点taint标记 |
用kubectl help可以查看kubectl相关的命令
[root@master ~]# kubectl --help
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
Basic Commands (Beginner):
create Create a resource from a file or from stdin.
expose 使用 replication controller, service, deployment 或者 pod 并暴露它作为一个新的Kubernetes Service
run 在集群中运行一个指定的镜像
set 为 objects 设置一个指定的特征
Basic Commands (Intermediate):
explain 查看资源的文档
get 显示一个或更多 resources
edit 在服务器上编辑一个资源
delete Delete resources by filenames, stdin, resources and names, or by resources and label selector
Deploy Commands:
rollout Manage the rollout of a resource
scale 为 Deployment, ReplicaSet, Replication Controller 或者 Job 设置一个新的副本数量
autoscale 自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量
Cluster Management Commands:
certificate 修改 certificate 资源.
cluster-info 显示集群信息
top Display Resource (CPU/Memory/Storage) usage.
cordon 标记 node 为 unschedulable
uncordon 标记 node 为 schedulable
drain Drain node in preparation for maintenance
taint 更新一个或者多个 node 上的 taints
Troubleshooting and Debugging Commands:
describe 显示一个指定 resource 或者 group 的 resources 详情
logs 输出容器在 pod 中的日志
attach Attach 到一个运行中的 container
exec 在一个 container 中执行一个命令
port-forward Forward one or more local ports to a pod
proxy 运行一个 proxy 到 Kubernetes API server
cp 复制 files 和 directories 到 containers 和从容器中复制 files 和 directories.
auth Inspect authorization
Advanced Commands:
diff Diff live version against would-be applied version
apply 通过文件名或标准输入流(stdin)对资源进行配置
patch 使用 strategic merge patch 更新一个资源的 field(s)
replace 通过 filename 或者 stdin替换一个资源
wait Experimental: Wait for a specific condition on one or many resources.
convert 在不同的 API versions 转换配置文件
Settings Commands:
label 更新在这个资源上的 labels
annotate 更新一个资源的注解
completion Output shell completion code for the specified shell (bash or zsh)
Other Commands:
alpha Commands for features in alpha
api-resources Print the supported API resources on the server
api-versions Print the supported API versions on the server, in the form of “group/version”
config 修改 kubeconfig 文件
plugin Provides utilities for interacting with plugins.
version 输出 client 和 server 的版本信息
Usage:
kubectl [flags] [options]
Use “kubectl --help” for more information about a given command.
Use “kubectl options” for a list of global command-line options (applies to all commands).
==========================================================================
语法:
kubectl create deployment NAME --image=image – [COMMAND] [args…]
选项:
–image 指定镜像
–replicas 创建指定数目的pod
[root@master ~]# kubectl create deployment test1 --image busybox
deployment.apps/test1 created #使用busybox镜像创建一个test1的pod
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-6799fc88d8-4k6rc 1/1 Running 2 27h
test1-78d64fd9b9-n2f79 0/1 CrashLoopBackOff 3 115s #可以看到处于退出状态,因为busybox使用的是sh,没有任务就会退出
//创建名为test2的部署,用于运行 busybox 映
[root@master ~]# kubectl create deployment test2 --image busybox – sleep 60
deployment.apps/test2 created
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test1-78d64fd9b9-n2f79 0/1 CrashLoopBackOff 4 3m12s
test2-7c95bf5bcb-s7wzk 1/1 Running 0 49s #运行中
//创建一个名为web的部署,该部署运行具有 3 个副本的 nginx 映像
[root@master ~]# kubectl create deployment web --image nginx --replicas 3
deployment.apps/web created
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web-96d5df5c8-f9t9x 1/1 Running 0 62s
web-96d5df5c8-m4fnb 1/1 Running 0 62s
web-96d5df5c8-stgdp 1/1 Running 0 62s
//查看pod运行的节点位置
[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web-96d5df5c8-f9t9x 1/1 Running 0 115s 10.244.1.9 node1
web-96d5df5c8-m4fnb 1/1 Running 0 115s 10.244.1.10 node1
web-96d5df5c8-stgdp 1/1 Running 0 115s 10.244.1.8 node1
//创建一个名为 web01 的部署,该部署运行 nginx映像并公开端口 80
[root@master ~]# kubectl create deployment web01 --image nginx --port=80
deployment.apps/web01 created
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
web01-59859fb9db-tksjv 1/1 Running 0 18s
//以 ps 输出格式列出所有 Pod
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-6799fc88d8-4k6rc 1/1 Running 2 27h
web-96d5df5c8-64z76 1/1 Running 0 82s
web-96d5df5c8-pggdj 1/1 Running 0 82s
web-96d5df5c8-vjv6x 1/1 Running 0 82s
web01-59859fb9db-tksjv 1/1 Running 0 17m
//查看你指定类型的pod,类型加pod名
[root@master ~]# kubectl get deployment web
NAME READY UP-TO-DATE AVAILABLE AGE
web 3/3 3 3 2m25s
//以 ps 输出格式列出所有 Pod,并提供更多信息(例如节点名称)
[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-6799fc88d8-4k6rc 1/1 Running 2 27h 10.244.1.5 node1
web-96d5df5c8-64z76 1/1 Running 0 2m5s 10.244.1.13 node1
web-96d5df5c8-pggdj 1/1 Running 0 2m5s 10.244.1.12 node1
web-96d5df5c8-vjv6x 1/1 Running 0 2m5s 10.244.1.14 node1
web01-59859fb9db-tksjv 1/1 Running 0 17m 10.244.1.11 node1
//以 ps 输出格式列出所有复制控制器和服务
[root@master ~]# kubectl get rc,svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 443/TCP 27h
service/nginx ClusterIP 10.102.213.63 8080/TCP 6m20s #svc是service简写,也可以写全拼
kubectl get cs # 查看集群状态
kubectl get nodes # 查看集群节点信息
kubectl get ns # 查看集群命名空间
kubectl get svc -n kube-system # 查看指定命名空间的服务
kubectl get pod -o wide # 查看Pod详细信息
kubectl get pod -o yaml # 以yaml格式查看Pod详细信息
kubectl get pods # 查看资源对象,查看所有Pod列表
kubectl get rc,service # 查看资源对象,查看rc和service列表
kubectl get pod,svc,ep --show-labels # 查看pod,svc,ep能及标签信息
kubectl get all --all-namespaces # 查看所有的命名空间
选项:
–port 要映射的宿主机端口
–target-port 映射给那个容器端口
//为复制的nginx创建一个服务,该服务在端口8080上服务并连接到端口80上的容器
[root@master ~]# kubectl expose deployment nginx --port 8080 --target-port 80
service/nginx exposed
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 443/TCP 27h
nginx ClusterIP 10.102.213.63 8080/TCP 20s
[root@master ~]# curl 10.102.213.63:8080
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
Commercial support is available at
Thank you for using nginx.
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
b3-76df468677-r2ctd 0/1 CrashLoopBackOff 5 3m53s
nginx-6799fc88d8-4k6rc 1/1 Running 2 27h
test1-78d64fd9b9-n2f79 0/1 CrashLoopBackOff 6 11m
test2-7c95bf5bcb-s7wzk 0/1 CrashLoopBackOff 4 9m3s
web-96d5df5c8-f9t9x 1/1 Running 0 6m31s
web-96d5df5c8-m4fnb 1/1 Running 0 6m31s
web-96d5df5c8-stgdp 1/1 Running 0 6m31s
web01-59859fb9db-tksjv 1/1 Running 0 3m15s
[root@master ~]# kubectl delete deployment test1
deployment.apps “test1” deleted
[root@master ~]# kubectl delete deployment web
deployment.apps “web” deleted
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
b3-76df468677-r2ctd 0/1 CrashLoopBackOff 6 7m8s
nginx-6799fc88d8-4k6rc 1/1 Running 2 27h
test2-7c95bf5bcb-s7wzk 0/1 CrashLoopBackOff 5 12m
web01-59859fb9db-tksjv 1/1 Running 0
// 删除service类型的pod
[root@master ~]# kubectl delete svc nginx
service “nginx” deleted
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 443/TCP 27h
//删除所有pod
[root@master ~]# kubectl delete pods --all
//强制删除pod节点
[root@master ~]# kubectl delete pod foo --force
语法:
$ run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command] – [COMMAND] [args…]
选项:
–image 指定镜像
–port 暴露容器端口
–labels key=value 指定标签
//启动一个 nginx pod
[root@master ~]# kubectl run nginx --image nginx
pod/nginx created
[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 0/1 ContainerCreating 0 6s node1
nginx-6799fc88d8-4k6rc 1/1 Running 2 27h 10.244.1.5 node1
//删除nginx
[root@master ~]# kubectl delete pods nginx
pod “nginx” deleted
// 暴露容器的80端口号
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
27h 10.244.1.5 node1
//删除nginx
[root@master ~]# kubectl delete pods nginx
pod “nginx” deleted
// 暴露容器的80端口号
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-8Tw3dFde-1715790834684)]
[外链图片转存中…(img-IUwXbGvV-1715790834685)]
[外链图片转存中…(img-eD4q3YbL-1715790834685)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
更多推荐
所有评论(0)