K8S环境搭建

k8s部署方式

  • Minikube 单点微型K8S
  • 二进制安装,

k8s文档

web命令行学习版本

点击 launch terminal 开启

kubectl 使用

参考博客

将 config 放到 ~/.kube 目录下 , 然后 就可以用了

1
 .\kubectl.exe get pods

pods 可以理解为 docker 下面的 容器 【container】

get pods 就是 将服务器的容器列出来

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 通过 shell 和服务器交互
.\kubectl.exe exec -it  order-workflow-deployment-5f5c5dfd9b-pvbjc  -- /bin/bash
# 查看部署的
.\kubectl.exe get deployment
# 打印日志
.\kubectl.exe logs cmdb-deployment-6676f97786-pbdzf

# 查看我本地的配置
.\kubectl.exe  config view
# 
kubectl apply -f  ./config.yaml

# 查看监听端口
.\kubectl.exe get  svc

# 创建容器
kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-service.yaml
# 显示创建的 服务
 .\kubectl.exe get service  cmdb

# 查看名称空间
 .\kubectl.exe get  ns
 
# 创建名称空间
kubectl create ns hello 
# 删除 【谨慎删除,因为会删除这个空间下所有的资源】
kubectl delete ns hello

# 根据配置文件来进行删除
kubectl delete -f hello.yaml

kubernates - 核心概念

  • Pod: 运行中的【一组容器,一个 pod 可以 多个容器】,Pod 是 kkubernetes 中应用的最小单位 【k8s 为了操作方便,每一个容器都被封装并且抽象为一个 pod, 注意,一个 pod 可以有多个容器,这样可以方便容器编排】
1
2
3
4
5
 
kubectl get pod -n default
# 默认 就是 namespace = default
kubectl describe pod mynginx 
# 查看 描述信息【比如容器出了什么问题,查看事件】

deployment 的概念

k8s 的 deployment 有一个 功能,就是 使 Pod 拥有多副本,自愈,扩容缩容等能力。

多副本

1
2
kubectl create deployment my-dep --image=nginx --replicas=3
# Nginx部署3份

其他工作负载

  1. deployment: 无状态应用部署,比如微服务,提供多副本等功能
  2. StatefulSet: 有状态应用部署,比如Redis,提供稳定的存储、网络等功能
  3. DaemonSet: 守护型应用部署,比如日志收集组件,在每个机器都运行一份
  4. Job/CronJob: 定时任务部署,比如垃圾清理组件,可以在指定时间运行

k8s 最佳实践

  • 使用 kubectl apply -f 。它在所有 .yaml,yml,.json 文件中查找 kubernates 配置,并将其传递给 apply
  • 使用标签选择器进行 get 和 delete 操作,而不是特定的对象名称。

参考博客

1
2
3
4
5
6
7
kubectl get pods --show-labels

# 添加 release 标签,值为 stable
kubectl label pods myapp-6865459dff-445x2 release=stable
kubectl get pods -l release!=stable
kubectl get pods -l "release in (stable,beta,alpha)"
kubectl get pods -l "release notin (stable,beta,alpha)"