字节Java高级岗:K8S太火了!花10分钟玩转它不香么_k8s抢了java的市场(1)

最后

看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题

注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

互联网工程师必备的面试1000题

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取


minikube version




minikube version: v1.16.0  
 commit: 9f1e482427589ff8451c4723b6ba53bb9742fbb1



  • 查看kubectl的版本号,第一次使用会直接安装kubectl:

minikube kubectl version  
 复制代码




Client Version: version.Info{Major:“1”, Minor:“20”, GitVersion:“v1.20.0”, GitCommit:“af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38”, GitTreeState:“clean”, BuildDate:“2020-12-08T17:59:43Z”, GoVersion:“go1.15.5”, Compiler:“gc”, Platform:“linux/amd64”}  
 Server Version: version.Info{Major:“1”, Minor:“20”, GitVersion:“v1.20.0”, GitCommit:“af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38”, GitTreeState:“clean”, BuildDate:“2020-12-08T17:51:19Z”, GoVersion:“go1.15.5”, Compiler:“gc”, Platform:“linux/amd64”}



  • 如果你想直接使用kubectl命令的话,可以将其复制到/bin目录下去:

## 查找kubectl命令的位置


find / -name kubectl


## 找到之后复制到/bin目录下


cp /mydata/docker/volumes/minikube/\_data/lib/minikube/binaries/v1.20.0/kubectl /bin/


## 直接使用kubectl命令


kubectl version



  • 查看集群详细信息:

kubectl cluster-info




Kubernetes control plane is running at https://192.168.49.2:8443  
 KubeDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy


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



  • 查看集群中的所有Node,可以发现Minikube创建了一个单节点的简单集群:

kubectl get nodes




NAME STATUS ROLES AGE VERSION  
 minikube Ready control-plane,master 46m v1.20.0



部署应用

一旦运行了K8S集群,就可以在其上部署容器化应用程序。通过创建Deployment对象,可以指挥K8S如何创建和更新应用程序的实例。

  • 指定好应用镜像并创建一个Deployment,这里创建一个Nginx应用:

kubectl create deployment kubernetes-nginx --image=nginx:1.10



  • 创建一个Deployment时K8S会产生如下操作:

    • 选择一个合适的Node来部署这个应用;
    • 将该应用部署到Node上;
    • 当应用异常关闭或删除时重新部署应用。
  • 查看所有Deployment:


kubectl get deployments




NAME READY UP-TO-DATE AVAILABLE AGE  
 kubernetes-nginx 1/1 1 1 21h



  • 我们可以通过kubectl proxy命令创建一个代理,这样就可以通过暴露出来的接口直接访问K8S的API了,这里调用了查询K8S版本的接口;

[macro@linux-local root]$ kubectl proxy  
 Starting to serve on 127.0.0.1:8001  
 [root@linux-local ~]# curl http://localhost:8001/version  
 {  
 “major”: “1”,  
 “minor”: “20”,  
 “gitVersion”: “v1.20.0”,  
 “gitCommit”: “af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38”,  
 “gitTreeState”: “clean”,  
 “buildDate”: “2020-12-08T17:51:19Z”,  
 “goVersion”: “go1.15.5”,  
 “compiler”: “gc”,  
 “platform”: “linux/amd64”  
 }



查看应用

通过对运行应用的Pod进行操作,可以查看容器日志,也可以执行容器内部命令。

  • 查看K8s中所有Pod的状态:

kubectl get pods




NAME READY STATUS RESTARTS AGE  
 kubernetes-nginx-78bcc44665-8fnnn 1/1 Running 1 21h



  • 查看Pod的详细状态,包括IP地址、占用端口、使用镜像等信息;

kubectl describe pods




Name: kubernetes-nginx-78bcc44665-8fnnn  
 Namespace: default  
 Priority: 0  
 Node: minikube/192.168.49.2  
 Start Time: Tue, 05 Jan 2021 13:57:46 +0800  
 Labels: app=kubernetes-nginx  
 pod-template-hash=78bcc44665  
 version=v1  
 Annotations:   
 Status: Running  
 IP: 172.17.0.7  
 IPs:  
 IP: 172.17.0.7  
 Controlled By: ReplicaSet/kubernetes-nginx-78bcc44665  
 Containers:  
 nginx:  
 Container ID: docker://31eb1277e507ec4cf8a27b66a9f4f30fb919d17f4cd914c09eb4cfe8322504b2  
 Image: nginx:1.10  
 Image ID: docker-pullable://nginx@sha256:6202beb06ea61f44179e02ca965e8e13b961d12640101fca213efbfd145d7575  
 Port:   
 Host Port:   
 State: Running  
 Started: Wed, 06 Jan 2021 09:22:40 +0800  
 Last State: Terminated  
 Reason: Completed  
 Exit Code: 0  
 Started: Tue, 05 Jan 2021 14:24:55 +0800  
 Finished: Tue, 05 Jan 2021 17:32:48 +0800  
 Ready: True  
 Restart Count: 1  
 Environment:   
 Mounts:  
 /var/run/secrets/kubernetes.io/serviceaccount from default-token-dhr4b (ro)  
 Conditions:  
 Type Status  
 Initialized True  
 Ready True  
 ContainersReady True  
 PodScheduled True  
 Volumes:  
 default-token-dhr4b:  
 Type: Secret (a volume populated by a Secret)  
 SecretName: default-token-dhr4b  
 Optional: false  
 QoS Class: BestEffort  
 Node-Selectors:   
 Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s  
 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s  
 Events:   
 复制代码



  • 将Pod的名称设置为环境变量,方便之后使用$POD_NAME来应用Pod的名称:

export POD\_NAME=kubernetes-nginx-78bcc44665-8fnnn



  • 查看Pod打印的日志:

kubectl logs $POD\_NAME



  • 使用exec可以在Pod的容器中执行命令,这里使用env命令查看环境变量:

kubectl exec $POD\_NAME – env  
 复制代码




PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin  
 HOSTNAME=kubernetes-nginx-78bcc44665-8fnnn  
 KUBERNETES\_PORT\_443\_TCP\_ADDR=10.96.0.1  
 KUBERNETES\_SERVICE\_HOST=10.96.0.1  
 KUBERNETES\_SERVICE\_PORT=443  
 KUBERNETES\_SERVICE\_PORT\_HTTPS=443  
 KUBERNETES\_PORT=tcp://10.96.0.1:443  
 KUBERNETES\_PORT\_443\_TCP=tcp://10.96.0.1:443  
 KUBERNETES\_PORT\_443\_TCP\_PROTO=tcp  
 KUBERNETES\_PORT\_443\_TCP\_PORT=443  
 NGINX\_VERSION=1.10.3-1~jessie  
 HOME=/root



  • 进入容器内部并执行bash命令,如果想退出容器可以使用exit命令:

kubectl exec -ti $POD\_NAME – bash



公开暴露应用

默认Pod无法被集群外部访问,需要创建Service并暴露端口才能被外部访问。

  • 创建一个Service来暴露kubernetes-nginx这个Deployment:

kubectl expose deployment/kubernetes-nginx --type=“NodePort” --port 80



  • 查看K8S中所有Service的状态:

kubectl get services  
 复制代码




NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE  
 kubernetes ClusterIP 10.96.0.1 443/TCP 5h16m  
 kubernetes-nginx NodePort 10.105.177.114 80:31891/TCP 5s



  • 查看Service的详情,通过NodePort属性可以得到暴露到外部的端口;

kubectl describe services/kubernetes-nginx




Name: kubernetes-nginx  
 Namespace: default  
 Labels: app=kubernetes-nginx  
 Annotations:   
 Selector: app=kubernetes-nginx  
 Type: NodePort  
 IP Families:   
 IP: 10.106.227.54  
 IPs: 10.106.227.54  
 Port: 80/TCP  
 TargetPort: 80/TCP  
 NodePort: 30158/TCP  
 Endpoints: 172.17.0.7:80  
 Session Affinity: None  
 External Traffic Policy: Cluster  
 Events: 





# 总结

阿里伤透我心,疯狂复习刷题,终于喜提offer  哈哈~好啦,不闲扯了


![image](https://img-blog.csdnimg.cn/img_convert/fd6a2c56e4a1db617db4b1d077a089b6.webp?x-oss-process=image/format,png)


1、JAVA面试核心知识整理(PDF):包含**JVM**,**JAVA集合**,**JAVA多线程并发**,JAVA基础,**Spring原理**,**微服务**,Netty与RPC,网络,日志,**Zookeeper**,**Kafka**,**RabbitMQ**,Hbase,**MongoDB**,Cassandra,**设计模式**,**负载均衡**,**数据库**,**一致性哈希**,**JAVA算法**,**数据结构**,加密算法,**分布式缓存**,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。

![image](https://img-blog.csdnimg.cn/img_convert/ef2d4e4e963791c1aa8844071647ca25.webp?x-oss-process=image/format,png)


2、Redis学习笔记及学习思维脑图

![image](https://img-blog.csdnimg.cn/img_convert/b865002d99439fb7167f7d2299faea95.webp?x-oss-process=image/format,png)


3、数据面试必备20题+数据库性能优化的21个最佳实践

![image](https://img-blog.csdnimg.cn/img_convert/094aadc6ed7b8c5181bad554d35915a6.webp?x-oss-process=image/format,png)





> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

doop,Spark,Storm,YARN,机器学习,云计算共30个章节。

[外链图片转存中...(img-PDWnuF7T-1715533292333)]


2、Redis学习笔记及学习思维脑图

[外链图片转存中...(img-dIfZqKzp-1715533292334)]


3、数据面试必备20题+数据库性能优化的21个最佳实践

[外链图片转存中...(img-Z2LFxAn3-1715533292334)]





> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值