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

最后

针对以上面试题,小编已经把面试题+答案整理好了

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

面试专题

image

除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习

image

image

image

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

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

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:


*   通过CURL命令通过`Minikube IP:NodePort IP`可以访问Nginx服务,此时将打印Nginx主页信息;


curl $(minikube ip):30158



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.

#### 标签的使用



> 
> 通过给资源添加Label,可以方便地管理资源(如Deployment、Pod、Service等)。
> 
> 
> 


* 查看Deployment中所包含的Label;



kubectl describe deployment



Name: kubernetes-nginx
Namespace: default
CreationTimestamp: Tue, 05 Jan 2021 13:57:46 +0800
Labels: app=kubernetes-nginx
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=kubernetes-nginx
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge


* 通过Label查询Pod:



kubectl get pods -l app=kubernetes-nginx



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


* 通过Label查询Service:



kubectl get services -l app=kubernetes-nginx



NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-nginx NodePort 10.106.227.54 80:30158/TCP 4m44s


* 给Pod添加Label:



kubectl label pod $POD_NAME version=v1



### 总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

**高性能**。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

**一致性**。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

**高可用**。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。

-----

篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

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

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

由于内容太多,这里只截取部分的内容。


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

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

在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。

-----

篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

[外链图片转存中...(img-MCoRfks5-1715533328716)]

[外链图片转存中...(img-sr1NnKVy-1715533328716)]

由于内容太多,这里只截取部分的内容。


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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值