K8s Kubectl基础命令的使用、滚动更新、以及回滚操作,java面试项目经历

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

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 的版本信息

Kubectl常用命令的使用

=============================================================================

explain


获取资源

用法:

kubectl explain RESOURCE

//获取资源及其字段的文档

[root@master ~]# kubectl explain pods

KIND: Pod

VERSION: v1

DESCRIPTION:

Pod is a collection of containers that can run on a host. This resource is

created by clients and scheduled onto hosts.

FIELDS:

apiVersion

APIVersion defines the versioned schema of this representation of an

object. Servers should convert recognized schemas to the latest internal

value, and may reject unrecognized values. More info:

https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

Kind is a string value representing the REST resource this object

represents. Servers may infer this from the endpoint the client submits

requests to. Cannot be updated. In CamelCase. More info:

https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

Standard object’s metadata. More info:

https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

Specification of the desired behavior of the pod. More info:

https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

status

Most recently observed status of the pod. This data may not be up to date.

Populated by the system. Read-only. More info:

https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

edit


编辑资源

//运行一个pod类型的nginx,名字叫nginx,内型是deployment

[root@master ~]# kubectl create deployment nginx --image nginx

deployment.apps/nginx created

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-cpbg4 0/1 ContainerCreating 0 10s

//使用edit命令编辑

[root@master ~]# kubectl edit deployment nginx

kind: Deployment

metadata:

annotations:

deployment.kubernetes.io/revision: “1”

creationTimestamp: “2021-12-20T10:33:49Z”

generation: 1

labels:

app: nginx

name: jjyy #添加name: jjyy

//查看

[root@master ~]# kubectl describe deploy nginx

Name: nginx

Namespace: default

CreationTimestamp: Mon, 20 Dec 2021 18:33:49 +0800

Labels: app=nginx

name=jjyy

Annotations: deployment.kubernetes.io/revision: 1

Selector: app=nginx

Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable

StrategyType: RollingUpdate

MinReadySeconds: 0

RollingUpdateStrategy: 25% max unavailable, 25% max surge

Pod Template:

scale


动态扩展

//使用scale扩展

[root@master ~]# kubectl scale deployment/nginx --replicas 3

deployment.apps/nginx scaled

//扩展后查看多了几个相同类型的pod

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-8bnn8 1/1 Running 0 37s

nginx-6799fc88d8-cpbg4 1/1 Running 0 15m

nginx-6799fc88d8-t6vpw 1/1 Running 0 37s

//如果只需要2个deployment类型的nginx的pod

[root@master ~]# kubectl scale deployment/nginx --replicas 2

deployment.apps/nginx scaled

//查看发现只有两个(删除是随机的)

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-8bnn8 1/1 Running 0 3m22s

nginx-6799fc88d8-cpbg4 1/1 Running 0 18m

autoscale


自动扩展,给定一个范围,自动根据业务的访问量增加或减少

//最少3个,当不满足条件时会自动创建

[root@master ~]# kubectl autoscale deployment/nginx --min 3 --max=5

horizontalpodautoscaler.autoscaling/nginx autoscaled

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-8bnn8 1/1 Running 0 8m1s

nginx-6799fc88d8-cpbg4 1/1 Running 0 23m

nginx-6799fc88d8-ctjmt 0/1 ContainerCreating 0 4s

//当大于5个时,先创建,之后也会随机删除,直到满足条件五个

[root@master ~]# kubectl scale deployment/nginx --replicas 7

deployment.apps/nginx scaled

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-84mfw 1/1 Running 0 52s

nginx-6799fc88d8-8bnn8 1/1 Running 0 20m

nginx-6799fc88d8-cpbg4 1/1 Running 0 35m

nginx-6799fc88d8-ctjmt 1/1 Running 0 12m

nginx-6799fc88d8-rf74m 1/1 Running 0 52s

cluster-info


显示集群信息

[root@master ~]# kubectl cluster-info

Kubernetes control plane is running at https://192.168.129.250:6443

KubeDNS is running at https://192.168.129.250:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use ‘kubectl cluster-info dump’.

cordon


可调度

[root@master ~]# kubectl cordon node2

node/node2 already cordoned

[root@master ~]# kubectl get node

NAME STATUS ROLES AGE VERSION

master Ready control-plane,master 2d4h v1.20.0

node1 NotReady 2d4h v1.20.0

node2 Ready,SchedulingDisabled 2d4h v1.20.0

[root@master ~]# kubectl get pod -o wide

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

nginx-6799fc88d8-cpbg4 1/1 Running 0 132m 10.244.1.24 node1

nginx-6799fc88d8-plvhf 1/1 Running 0 95m 10.244.1.31 node1

nginx-6799fc88d8-rf74m 1/1 Running 1 97m 10.244.2.4 node2

[root@master ~]# kubectl scale deployment/nginx --replicas 2

[root@master ~]# kubectl get pod -o wide

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

nginx-6799fc88d8-9wk4h 0/1 Pending 0 3m46s

nginx-6799fc88d8-rf74m 1/1 Running 1 103m 10.244.2.4 node2

nginx-6799fc88d8-snm2v 0/1 Pending 0 16s

uncordon


不可调度

[root@master ~]# kubectl uncordon node2

node/node2 uncordoned

[root@master ~]# kubectl get node

NAME STATUS ROLES AGE VERSION

master Ready control-plane,master 2d4h v1.20.0

node1 NotReady 2d4h v1.20.0

node2 Ready 2d4h v1.20.0

[root@master ~]# kubectl create deployment nginx2 --image nginx

deployment.apps/nginx2 created

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-9wk4h 1/1 Running 0 8m22s

nginx-6799fc88d8-rf74m 1/1 Running 1 108m

nginx-6799fc88d8-snm2v 1/1 Running 0 4m52s

nginx2-5fc4444698-bf76p 1/1 Running 0 25s

[root@master ~]# kubectl get pod -o wide

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

nginx-6799fc88d8-9wk4h 1/1 Running 0 8m59s 10.244.2.5 node2

nginx-6799fc88d8-rf74m 1/1 Running 1 109m 10.244.2.4 node2

nginx-6799fc88d8-snm2v 1/1 Running 0 5m29s 10.244.2.6 node2

nginx2-5fc4444698-bf76p 1/1 Running 0 62s 10.244.2.7 node2

describe


显示指定pod的详细信息

[root@master ~]# kubectl describe pod nginx

Name: nginx-6799fc88d8-cpbg4

Namespace: default

Priority: 0

Node: node1/192.168.129.135

Start Time: Mon, 20 Dec 2021 18:33:49 +0800

Labels: app=nginx

pod-template-hash=6799fc88d8

Annotations:

Status: Running

IP: 10.244.1.24

logs


查看日志

[root@master ~]# kubectl logs deployment/nginx

2021/12/20 10:34:05 [notice] 1#1: start worker processes

2021/12/20 10:34:05 [notice] 1#1: start worker process 32

2021/12/20 10:34:05 [notice] 1#1: start worker process 33

/docker-entrypoint.sh: Configuration complete; ready for start up

[root@master ~]# kubectl get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.96.0.1 443/TCP 2d4h

nginx ClusterIP 10.102.213.63 8080/TCP 24h

[root@master ~]# curl 10.102.213.63:8080

Welcome to nginx!

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

nginx.org.

Commercial support is available at

nginx.com.

Thank you for using nginx.

[root@master ~]# kubectl logs deployment/nginx

2021/12/20 12:44:49 [notice] 1#1: start worker processes

2021/12/20 12:44:49 [notice] 1#1: start worker process 31

2021/12/20 12:44:49 [notice] 1#1: start worker process 32

10.244.0.0 - - [20/Dec/2021:13:04:14 +0000] “GET / HTTP/1.1” 200 615 “-” “curl/7.61.1” “-”

10.244.0.0 - - [20/Dec/2021:13:05:26 +0000] “GET / HTTP/1.1” 200 615 “-” “curl/7.61.1” “-”

attach


附加在一个容器里

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-cpbg4 1/1 Running 0 43m

nginx-6799fc88d8-plvhf 1/1 Running 0 6m38s

nginx-6799fc88d8-rf74m 1/1 Running 0 8m57s

[root@master ~]# kubectl attach nginx-6799fc88d8-cpbg4

Defaulting container name to nginx.

Use ‘kubectl describe pod/nginx-6799fc88d8-cpbg4 -n default’ to see all of the containers in this pod.

If you don’t see a command prompt, try pressing enter.

exec


执行容器命令

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-cpbg4 1/1 Running 0 45m

nginx-6799fc88d8-plvhf 1/1 Running 0 8m2s

nginx-6799fc88d8-rf74m 1/1 Running 0 10m

[root@master ~]# kubectl exec nginx-6799fc88d8-cpbg4 – date

Mon Dec 20 11:20:02 UTC 2021

[root@master ~]# kubectl exec -it nginx-6799fc88d8-cpbg4 – /bin/sh

ls

bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var

boot docker-entrypoint.d etc lib media opt root sbin sys usr

exit

[root@master ~]#

prot-forward


转发一个或多个端口到pod里面去

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

web-96d5df5c8-8fzdv 1/1 Running 0 17s

[root@master ~]# kubectl port-forward deployment/web 80 #可以变成’:80’(随机一个端口号,只能本机访问)或者变成指定的端口号’8080:80’(本机访问用80,其它主机访问就可以用8080)

Forwarding from 127.0.0.1:80 -> 80

Forwarding from [::1]:80 -> 80

[root@master ~]# ss -anlt

State Recv-Q Send-Q Local Address:Port Peer Address:Port

… 0.0.0.0:*

LISTEN 0 128 127.0.0.1:2381 0.0.0.0:*

LISTEN 0 128 127.0.0.1:80 0.0.0.0:*

[root@master ~]# curl 127.0.0.1

Welcome to nginx!

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

nginx.org.

Commercial support is available at

nginx.com.

Thank you for using nginx.

[root@master ~]# kubectl port-forward --address 0.0.0.0 deployment/web 80

Forwarding from 0.0.0.0:80 -> 80

//允许所有IP访问80端口

[root@master ~]# curl 192.168.129.250

Welcome to nginx!

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

nginx.org.

Commercial support is available at

nginx.com.

Thank you for using nginx.

在这里插入图片描述

cp


复制

拷贝文件或目录到容器中,或者从容器内向外拷贝

[root@master ~]# kubectl get pod

NAME READY STATUS RESTARTS AGE

nginx-6799fc88d8-cpbg4 1/1 Terminating 0 3h42m

nginx-6799fc88d8-plvhf 1/1 Terminating 0 3h5m

web-96d5df5c8-8fzdv 1/1 Running 0 5m38s

[root@master ~]# ls

anaconda-ks.cfg init kube-flannel.yml

[root@master ~]# kubectl cp /root/anaconda-ks.cfg web-96d5df5c8-8fzdv:/usr

[root@master ~]# kubectl exec web-96d5df5c8-8fzdv – ls -l /usr/

total 4

-rw------- 1 root root 1184 Dec 20 14:17 anaconda-ks.cfg

drwxr-xr-x 1 root root 261 Dec 2 10:59 bin

drwxr-xr-x 2 root root 6 Oct 3 09:15 games

…略

label


标签

给资源设置、更新标签

[root@master ~]# kubectl run nginx --image nginx

pod/nginx created

[root@master ~]# kubectl describe pod nginx

Name: nginx

Namespace: default

Priority: 0

Node: node2/192.168.129.136

Start Time: Mon, 20 Dec 2021 22:34:38 +0800

Labels: run=nginx

//追加标签

[root@master ~]# kubectl label pods nginx app=test

pod/nginx labeled

//查看标签

[root@master ~]# kubectl describe pod nginx

Name: nginx

Namespace: default

Priority: 0

Node: node2/192.168.129.136

Start Time: Mon, 20 Dec 2021 22:34:38 +0800

Labels: app=test

run=nginx

//更改标签

[root@master ~]# kubectl label --overwrite pods nginx app=hehe

pod/nginx labeled

//查看是否更改成功

[root@master ~]# kubectl describe pod nginx

Name: nginx

Namespace: default

Priority: 0

Node: node2/192.168.129.136

Start Time: Mon, 20 Dec 2021 22:34:38 +0800

Labels: app=hehe

run=nginx

api-resources


查看所有资源

[root@master ~]# kubectl api-resources

NAME SHORTNAMES APIVERSION NAMESPACED KIND

bindings v1 true Binding

componentstatuses cs v1 false ComponentStatus

configmaps cm v1 true ConfigMap

endpoints ep v1 true Endpoints

events ev v1 true Event

limitranges limits v1 true LimitRange

namespaces ns v1 false Namespace

nodes no v1 false Node

api-versions


API版本

[root@master ~]# kubectl api-versions

admissionregistration.k8s.io/v1

admissionregistration.k8s.io/v1beta1

apiextensions.k8s.io/v1

apiextensions.k8s.io/v1beta1

apiregistration.k8s.io/v1

apiregistration.k8s.io/v1beta1

apps/v1

authentication.k8s.io/v1

authentication.k8s.io/v1beta1

authorization.k8s.io/v1

authorization.k8s.io/v1beta1

autoscaling/v1

autoscaling/v2beta1

autoscaling/v2beta2

batch/v1

batch/v1beta1

certificates.k8s.io/v1

certificates.k8s.io/v1beta1

coordination.k8s.io/v1

coordination.k8s.io/v1beta1

discovery.k8s.io/v1beta1

events.k8s.io/v1

events.k8s.io/v1beta1

extensions/v1beta1

flowcontrol.apiserver.k8s.io/v1beta1

networking.k8s.io/v1

networking.k8s.io/v1beta1

node.k8s.io/v1

node.k8s.io/v1beta1

policy/v1beta1

rbac.authorization.k8s.io/v1

rbac.authorization.k8s.io/v1beta1

scheduling.k8s.io/v1

scheduling.k8s.io/v1beta1

storage.k8s.io/v1

storage.k8s.io/v1beta1

v1

最后

为什么我不完全主张自学?
平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

rbac.authorization.k8s.io/v1

rbac.authorization.k8s.io/v1beta1

scheduling.k8s.io/v1

scheduling.k8s.io/v1beta1

storage.k8s.io/v1

storage.k8s.io/v1beta1

v1

最后

为什么我不完全主张自学?
平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

[外链图片转存中…(img-n6U1bl05-1713636101148)]

[外链图片转存中…(img-bssxdOJe-1713636101149)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-uASAVbBk-1713636101149)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值