
K8S
文章平均质量分 67
wy_hhxx
这个作者很懒,什么都没留下…
展开
-
[K8S] Ingress
官方文档传送门 https://kubernetes.io/zh/docs/concepts/services-networking/ingress/Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。下面是一个将所有流量都发送到同一 Service 的简单 Ingress 示例:分为两步,- 部署Ingress Controller- 创建Ingress规则@ 部署Ingress Controller以i原创 2021-09-02 20:52:24 · 125 阅读 · 0 评论 -
[K8S] 环境变量获取
环境变量(env)是容器级别的参数,为容器设置环境变量方法有- 变量值从Pod属性获取- 变量值从自定义变量获取- 变量值从ConfigMap获取- 变量值从Secret获取@Pod属性和自定义变量test-env.yaml内容如下apiVersion: v1kind: Podmetadata: name: test-envspec: containers: - name: test-env image: busybox command: [ "sh",原创 2021-08-30 23:14:37 · 6976 阅读 · 0 评论 -
[K8S] StatefulSet
@Service DNSCoreDNS服务为每一个Service创建DNS记录用于域名解析ClusterIP记录格式:<service-name>.<namespace-name>.svc.cluster.local[root@k8s-master ~]# kubectl get pod -n kube-system| grep dnscoredns-7f89b7bc75-mgtnj 1/1 Running 24 ...原创 2021-08-29 18:07:26 · 1062 阅读 · 0 评论 -
[K8S] PV动态供给
@ 存储类(Storage Class)根据官网的存储制备器表格, NFS没有对应的内置制备器 ->https://kubernetes.io/zh/docs/concepts/storage/storage-classes/但可以使用外部制备器,代码仓库 ->https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner修改deployment.yaml的NFS服务器地址和路径, 然后apply[roo..原创 2021-08-29 12:42:35 · 798 阅读 · 0 评论 -
[K8S] PV和PVC
官方文档传送门 -> 持久卷 https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/@PV和PVC持久卷 PersistentVolume, PV 是集群中的资源可以由管理员事先供应(静态供应),或者使用存储类(Storage Class)动态供应持久卷申领 PersistentVolumeClaim, PVC 是对这些资源的请求概念上与 Pod 类似,Pod 会耗用节点资源,而 PVC申领会耗用 PV资源。Pod原创 2021-08-29 11:35:30 · 1119 阅读 · 0 评论 -
[K8S] NFS数据卷
所有节点安装nfs-utils ->yum install nfs-utils找一台VM当作NFS服务器, 姑且将k8s-node2(192.168.231.123)作为NFS服务器1) /etc/exports内容配置如下,路径/nfstest代表会将NFS服务器的这个路径挂载到NFS客户端[root@k8s-node2 ~]# cat /etc/exports/nfstest *(rw,no_root_squash)[root@k8s-node2 ~]#2) 在NFS服务器.原创 2021-08-28 14:49:50 · 167 阅读 · 0 评论 -
[K8S] 节点本地数据卷
K8S卷(Volume) 能够解决的问题:1. 容器出问题 kubelet重建容器,容器内文件会丢失2. 一个Pod中运行多个容器需要共享文件使用卷时, 在 .spec.volumes 字段中设置为 Pod 提供的卷,并在 .spec.containers[*].volumeMounts 字段中声明卷在容器中的挂载位置。节点本地数据卷例如 emptyDir 和 hostPath,可以解决上述问题 2@ emptyDir卷:一个临时存储卷,与Pod生命周期绑定,Pod被删除卷也会被删除应用.原创 2021-08-27 21:59:18 · 377 阅读 · 0 评论 -
[K8S] Service代理模式之IPVS
相比于iptables(由于规则遍历,随着访问量增加,匹配变慢), IPVS(使用哈希表)性能更佳1.Service默认使用的代理模式是iptables,可以查看kube-proxy pod验证[root@k8s-master ~]# kubectl get pod -n kube-systemNAME READY STATUS RESTARTS AGEcalico-kube-controllers-977原创 2021-08-22 23:08:35 · 1551 阅读 · 0 评论 -
[K8S] Service代理模式之iptables
创建deployment和service三个Pod的IP为10.244.169.16110.244.169.16310.244.169.165SVC的Cluster IP为10.104.247.10, nodePort为31947>>>Deployment[root@k8s-master ~]# kubectl get deploy -o wideNAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMA原创 2021-08-22 22:10:05 · 478 阅读 · 0 评论 -
[K8S] DaemonSet
DaemonSet 确保全部/部分节点上运行一个 Pod 的副本当有节点加入集群时,会为他们新增一个 Pod当有节点从集群移除时,这些 Pod也会被回收删除 DaemonSet将会删除它创建的所有 Pod应用场景:在每个节点上运行网络插件在每个节点上运行集群守护进程在每个节点上运行监控守护进程在每个节点上运行日志收集守护进程DaemonSet 的yaml文件和 Deployment类似, 需要修改类型, 去掉副本数, 如果希望在所有节点运行, 还需要添加污点容忍test-daem.原创 2021-08-22 16:00:30 · 545 阅读 · 0 评论 -
[K8S] Pod调度
- pod创建的过程- 资源限制(cpu,memory)- nodeSelector- nodeAffinity- 污点和污点容忍@pod创建的过程1、kubectl run(创建一个pod,请求发送给)-> apiserver(将数据存储到) -> etcd2、scheduler(将创建的pod根据调度算法选择一个合适的节点并标记,返回给) -> apiserver -> etcd3、kubelet(发现有新的pod分配,调用docker api创建容器,将容器状原创 2021-08-22 15:32:33 · 897 阅读 · 0 评论 -
[K8S] Pod中的容器类型、静态Pod
@Pod中的容器类型(1)Infrastructure Container 基础容器共用pause的网络栈和存储卷,只要有pod,容器pause就会启动在任意节点查看容器,可以看到一个应用容器会对应地有一个pause[root@k8s-node1 manifests]# docker psCONTAINER ID IMAGE COMMAND CREATED ...原创 2021-08-21 22:06:34 · 684 阅读 · 0 评论 -
[K8S] Pod的健康检查
健康检查由kubelet操作,包括1)存活检查(livenessProbe): 如果检查失败 -> 杀死容器 并根据Pod的restartPolicy来操作2)就绪检查(readinessProbe): 如果检查失败 -> 把Pod从service endpoints中剔除@重启策略(restartPolicy)Never:容器终止退出不重启容器Always:容器终止退出后重启容器(默认策略)OnFailure:容器异常退出(退出状态码非0)才重启容器@检查方法exec: 执行原创 2021-08-21 14:49:41 · 372 阅读 · 0 评论 -
[K8S] Pod资源共享
@Pod资源共享机制Kubernetes直接管理Pod,而不是容器Pod不是进程,而是容器运行的环境Pod是Kubernetes创建和管理的最小单元,不同Pod可以在不同Node上Pod中可以有一个或多个容器[1],且始终部署在一个Node上,这些容器共享存储、网络说明[1]:Pod中运行单个容器 Pod可以看作是单个容器的抽象封装Pod中运行多个容器 需要共享资源或紧密耦合的应用程序[2],Pod 将这些容器和存储资源打包为一个可管理的实体。说明[2]:应用程序之间发生文件、数据.原创 2021-08-15 15:09:24 · 1540 阅读 · 0 评论 -
[K8S] Deployment滚动更新和回滚、水平伸缩
@创建Deployment首先创建一个deployment,pod副本数为3,使用镜像nginx:1.19,并创建服务test-deploy-svc.yaml 的内容如下apiVersion: apps/v1kind: Deploymentmetadata: labels: app: web name: web namespace: defaultspec: replicas: 3 selector: matchLabels: app: w原创 2021-08-14 16:56:25 · 667 阅读 · 0 评论 -
[K8S] 使用yaml部署Deployment
命令部署举例kubectl create deployment web --image=nginx --replicas=3 -n defaultkubectl expose deployment web --port=80 --target-port=8080 --type=NodePort -n default使用yaml部署@如何写yaml?1.使用命令导出yaml,命令最后加上-dry-run=client -o yaml > somefilename.yaml说明:.原创 2021-08-14 11:35:19 · 3632 阅读 · 0 评论 -
[K8S] 常用查看命令
@查看master组件状态 kubectl get cs[root@k8s-master ~]# kubectl get csWarning: v1 ComponentStatus is deprecated in v1.19+NAME STATUS MESSAGE ERRORcontroller-manager Healthy okscheduler Healthy oketcd-0 ...原创 2021-08-08 21:15:25 · 2726 阅读 · 0 评论 -
[K8S] kubeadm init部署K8S
官方文档 ->https://kubernetes.io/zh/docs/home/@Kubernetes 是什么?https://v1-21.docs.kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/访问和工具层 Web控制台、RESTful API、日志、监控、CI/CD PaaS服务层 统一服务平台 容器编排层 K8S 容器引擎层 Docker IaaS基础设施层 提供.原创 2021-08-08 10:14:39 · 697 阅读 · 0 评论 -
[K8S] 使用yaml文件创建deployment踩坑(新手的小坑)
虽然用过、修改过现成的yaml文件,但这个东西一次没纯手打真的不行!以下是一个非常简单且漏洞百出的yaml文件|||# WRONG example version 1apiVersion: apps/v1kind: Deploymentmetadata: name: nginx1 namespace:defaultspec: replicas: 3 selector: matchLabels: app: nginx2template: meta原创 2021-07-27 20:33:11 · 9531 阅读 · 0 评论