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 ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:44469/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
  • 要想从外部访问Dashboard,需要从使用kubectl设置代理才行,--address设置为你的服务器地址;
kubectl proxy --port=44469 --address='192.168.5.94' --accept-hosts='^.*' &
  • 从外部访问服务器需要开启防火墙端口;
# 切换到root用户
su -
# 开启端口
firewall-cmd --zone=public --add-port=44469/tcp --permanent
# 重启防火墙
firewall-cmd --reload### 最后> **笔者已经把面试题和答案整理成了面试专题文档,有想获取到借鉴参考的朋友:点赞关注后,[戳这里即可免费领取](https://gitee.com/vip204888/java-p7)**![image](https://img-blog.csdnimg.cn/img_convert/24665a3f512164a3f895b0e4f4726b90.png)![image](https://img-blog.csdnimg.cn/img_convert/d17764a544b93f81a76f27a12d7b603d.png)![image](https://img-blog.csdnimg.cn/img_convert/047f1898e0b3432ffaabe55912dda465.png)![image](https://img-blog.csdnimg.cn/img_convert/90e4b9e81ed9f702356d96a16d1e575b.png)![image](https://img-blog.csdnimg.cn/img_convert/9774a4f7ca0f235e3ac51c5afdfa2452.png)=44469/tcp --permanent
# 重启防火墙
firewall-cmd --reload### 最后> **笔者已经把面试题和答案整理成了面试专题文档,有想获取到借鉴参考的朋友:点赞关注后,[戳这里即可免费领取](https://gitee.com/vip204888/java-p7)**[外链图片转存中...(img-mLtfanJ4-1628679032003)][外链图片转存中...(img-GzhoaI9z-1628679032006)][外链图片转存中...(img-iYt9hbAs-1628679032007)][外链图片转存中...(img-2G58Iua0-1628679032010)][外链图片转存中...(img-HYgsg08M-1628679032011)]![image](https://img-blog.csdnimg.cn/img_convert/8a02592cd22916e3e750d045a5ee6d00.png)

K8S太火了!花10分钟玩转它不香么,面试必备知识点相关推荐

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

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

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

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

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

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

  4. 字节Java高级岗:K8S太火了!花10分钟玩转它不香么

    To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/re ...

  5. echart 饼图每一块间隙_花10分钟做酱香饼,简单方便又美味,酥脆咸香比买的还要好吃...

    花10分钟做酱香饼,简单方便又美味,酥脆咸香比买的还要好吃 前几年,在单位附近有一家只做酱香饼的小店,刚开张的时候排很长队,我为了一块酱香饼排队半小时.后来买酱香饼的人少了,我三天两头买一块酱香饼解馋 ...

  6. 花10分钟看一看少走30年弯路

    花10分钟看一看少走30年弯路 HP大中华区总裁孙振耀退休感言 : 如果这篇文章没有分享给你,那是我的错. 如果这篇文章分享给你了,你却没有读,继续走弯路的你不要怪我. 如果你看了这篇文章,只读了一半 ...

  7. 自行车车把会吧车刮坏吗_花10分钟即可开始使用车把

    自行车车把会吧车刮坏吗 by Wing Puah 永帕(Wing Puah) 花10分钟即可开始使用车把 (Take 10 minutes to get started with Handlebars ...

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

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

  9. k8s 各种网络方案 - 每天5分钟玩转 Docker 容器技术(170)

    网络模型有了,如何实现呢? 为了保证网络方案的标准化.扩展性和灵活性,Kubernetes 采用了 Container Networking Interface(CNI)规范. CNI 是由 Core ...

最新文章

  1. 虚拟服务器的运行原理,虚拟机复制的工作原理
  2. 程序员微信头像_这才是程序员的内心独白
  3. 最近公共祖先 python_求二叉搜索树的最近公共祖先
  4. 汇编指令的学习1——ARM汇编的特点
  5. LeetCode 2074. 反转偶数长度组的节点(链表)
  6. elasticsearch 查看索引_ElasticSearch 索引基本操作
  7. 51单片机并行I/O口工作原理
  8. 在keil uVision 2/uVision 3下使用伟福系列仿真器的方法:
  9. 基于SSM的家庭理财系统
  10. 前端加密使用AES与后端配合(ECB)
  11. 项目管理—成本效益分析
  12. 用计算机怎么算异分母加减法,怎么正确算异分母分数加减法
  13. JAVA当前时间timestamp_java获取获得Timestamp类型的当前系统时间
  14. 【项目】区块链在电商领域中的应用-草莓糖(CMT)(一)
  15. 服务器的正向代理与反向代理
  16. 大厂职级、薪资一览表,你处在哪一级?(BAT/TMD/华为)
  17. Android安装教程
  18. modbus4j.jar实现modbus urt模式
  19. 所有身体器官的英文单词
  20. 关于WIN10系统无法打开CHM文件

热门文章

  1. Office365 Exchange Online系列之邮箱大管家视频课程-李远-专题视频课程
  2. React集成中国地图
  3. 记录一次docker安装遇到的坑
  4. 万字长文解析何时使用领域驱动设计
  5. [作业]英语作业,无聊记事
  6. 基于matlab各滤波器源代码,基于matlab各滤波器源代码
  7. 斯隆奖获得者李博:从博弈论出发,和「偶像」并肩的感觉很好 | 青源专栏
  8. 一套强大的vim配置文件+详细注释
  9. QQ支付下单思路和代码
  10. UE4C++ 调用蒙太奇动画