• To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
  • Preparing Kubernetes v1.20.0 on Docker 20.10.0 …
    • Generating certificates and keys …
    • Booting up control plane …
    • Configuring RBAC rules …
  • Verifying Kubernetes components…
  • Enabled addons: default-storageclass, storage-provisioner
  • kubectl not found. If you need it, try: ‘minikube kubectl – get pods -A’
  • Done! kubectl is now configured to use “minikube” cluster and “default” namespace by default

## Kubernetes的使用### 创建集群> 通过Minikube我们可以创建一个单节点的K8S集群,集群管理Master和负责运行应用的Node都部署在此节点上。*   查看Minikube的版本号:

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:


*   通过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   <none>        80:30158/TCP   4m44s
  • 给Pod添加Label:
kubectl label pod $POD_NAME version=v1
  • 查看Pod的详细信息,可以查看Label信息:
kubectl describe pods $POD_NAME
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-nginxpod-template-hash=78bcc44665version=v1
  • 通过Label查询Pod:
kubectl get pods -l version=v1
  • 通过Label删除服务:
kubectl delete service -l app=kubernetes-nginx
NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP        30h

可视化管理

Dashboard是基于网页的K8S用户界面。你可以使用Dashboard将容器应用部署到K8S集群中,也可以对容器应用排错,还能管理集群资源。

  • 查看Minikube内置插件,默认情况下Dashboard插件未启用:
minikube addons list
|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| dashboard                   | minikube | disabled     |
| default-storageclass        | minikube | enabled ✅   |
|-----------------------------|----------|--------------|
  • 启用Dashboard插件:
minikube addons enable dashboard
  • 开启Dashboard,通过--url参数不会打开管理页面,并可以在控制台获得访问路径:
minikube dashboard --url
* Verifying dashboard health ...# 最后看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下**互联网工程师必备的面试1000题**。> 注意:不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友,**[直接戳这里即可免费下载](https://gitee.com/vip204888/java-p7)**![最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?](https://img-blog.csdnimg.cn/img_convert/028a25d9c2fae320be9df963225f2931.png)互联网工程师必备的面试1000题而且从上面三家来看,**算法与数据结构是必备不可少的**呀,因此我建议大家可以去**刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》**,里面近**200道真实出现过的经典代码面试题**。三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下**互联网工程师必备的面试1000题**。> 注意:不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友,**[直接戳这里即可免费下载](https://gitee.com/vip204888/java-p7)**[外链图片转存中...(img-SYoiNhB3-1628148805801)]互联网工程师必备的面试1000题而且从上面三家来看,**算法与数据结构是必备不可少的**呀,因此我建议大家可以去**刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》**,里面近**200道真实出现过的经典代码面试题**。![最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?](https://img-blog.csdnimg.cn/img_convert/19eb59ea19795c929e8bb04c4a07e2f3.png)

字节Java高级岗:K8S太火了!花10分钟玩转它不香么相关推荐

  1. 图文详解:K8S太火了!花10分钟玩转它不香么

    通过Minikube我们可以创建一个单节点的K8S集群,集群管理Master和负责运行应用的Node都部署在此节点上. 查看Minikube的版本号: minikube version minikub ...

  2. K8S太火了!花10分钟玩转它不香么?

    我的Mall电商实战项目一直使用的是Docker容器化部署,有很多朋友建议搞个Kubernetes部署.最近正好在学习Kubernetes,准备更新一波!今天我们先来学习下Kubernetes的核心概 ...

  3. K8S太火了,花10分钟玩转它不香么?

    我的Mall电商实战项目一直使用的是Docker容器化部署,有很多朋友建议搞个Kubernetes部署.最近正好在学习Kubernetes,准备更新一波!今天我们先来学习下Kubernetes的核心概 ...

  4. K8S太火了!花10分钟玩转它不香么,面试必备知识点

    kubectl create deployment kubernetes-nginx --image=nginx:1.10 * 创建一个Deployment时K8S会产生如下操作:* 选择一个合适的N ...

  5. 字节Java高级岗:javaio流面试题

    三面头条 面试岗位是后台研发工程师,地点选择了上海,通过大佬内推,跳过死亡笔试,加上疫情期间,所以直接视频面,从3点开始,断断续续到晚上8点结束. 一共三轮技术面试,每一轮都要写代码,也喜欢问一些底层 ...

  6. 字节Java高级岗:java测试开发工程师要求

    第一篇:脑图篇 1.1 手绘 Spring 架构脑图 1.2 手绘 Spring5 架构脑图 1.3 手绘 Spring Security 架构脑图 1.4 手绘 Spring Boot 架构脑图 1 ...

  7. 用 k8s 运行一次性任务 - 每天5分钟玩转 Docker 容器技术(132)

    用 k8s 运行一次性任务 - 每天5分钟玩转 Docker 容器技术(132) 原创 CloudMan CloudMan 2018-02-21 第132篇 用 k8s 运行一次性任务 容器按照持续运 ...

  8. 腾讯Java高级岗180道面试真题,面试大厂拿45Koffer没问题

    一.数据结构与算法基础 · 说一下几种常见的排序算法和分别的复杂度. · 用Java写一个冒泡排序算法 · 描述一下链式存储结构. · 如何遍历一棵二叉树? · 倒排一个LinkedList. · 用 ...

  9. 阿里巴巴2020首发136道Java高级岗面试题(含答案)

    原文地址 java基础 Arrays.sort实现原理和Collection实现原理 foreach和while的区别(编译之后) 线程池的种类,区别和使用场景 分析线程池的实现原理和线程的调度过程 ...

最新文章

  1. ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator
  2. 学习鸟哥的Linux私房菜笔记(4)——文件
  3. python开发范围_Python上的字母范围
  4. ES6前端就业课第三课之class
  5. ASP.NET MVC下使用AngularJs语言(三):ng-options
  6. jsf集成spring_Spring和JSF集成:导航
  7. python绘制拟合回归散点图_Python之简单线性回归
  8. VIJOS 1512SuperBrother打鼹鼠(二维BIT)
  9. 带负荷测试要求二次最小电流_电流回路基础知识(15):带负荷测试
  10. Fetion2008 分析 Part1:准备工作
  11. 玩转树莓派-2.配置你的树莓派
  12. 用Adomd.net构建最清凉的olap示例
  13. LINUX上传下载小工具lrzsz
  14. Altium Designer元件库下载
  15. SAP增强 和VA01相关增强点介绍
  16. 旅馆业等领域旅客入住身份核验解决方案
  17. AI学习教程:AI(Adobe lliustrator)快速入门
  18. SLG手游策略游戏-分析思维
  19. 使用js完成一个类似于小广告的功能,斜着运动,遇到边界弹回
  20. 网站监控程序uptime-kuma,宝塔面板搭建 ,TCP/HTTP监控

热门文章

  1. 有道翻译爬虫+JS逆向
  2. 阿里云配置小程序证书 https总结
  3. 红蓝对抗之邮件钓鱼攻击
  4. 2021年中国旅游产业整体现状分析,疫情后市场恢复不及预期,相较疫情前仍有差距「图」
  5. 定义符号常量pi.const float pi= 3.1415926f; 这句话是否正确
  6. 松下电视机竟暗藏魂斗罗游戏(哈哈哈)
  7. ICPC2021(沈阳)
  8. 网络舆情源头管理方案
  9. 用户体验设计师常用的21款工具和应用
  10. 什么是域什么是工作组