
kubernetes学习专栏
学习内容为B站尚硅谷k8s视频
我的喵叫初六
这个作者很懒,什么都没留下…
展开
-
kubernetes pod日志查看用户创建
kubernetes创建用户及日志查看rbac权限原创 2023-10-10 19:07:14 · 592 阅读 · 0 评论 -
kubernetes No API token found for service account “default“, retry after the token is automatically
在monitoring命名空间下创建deploy资源失败阿里云无状态列表中显示如下报错:No API token found for service account "default", retry after the token is automatically经过排查是serviceaccounts的default丢失导致kubectl get sa -n monitoringdefault为0阿里云客服让我pull helm 的 chart,从中找到serv原创 2022-03-24 17:19:52 · 296 阅读 · 0 评论 -
kubernetes创建secret报错
执行创建secret时报错# kubectl create secret generic thanos-objectstorage --from-file=objstore.yaml -n monitoring报错:Error from server (InternalError): Internal error occurred: failed calling webhook "rancher.cattle.io": Post https://rancher-webhook.cattle-s原创 2022-03-23 16:35:47 · 2581 阅读 · 0 评论 -
Kubernetes 及 Docker容器中文字符
解决中文乱码问题在Dockerfile中添加如下配置,生成镜像即可ENV LC_ALL=zh_CN.utf8ENV LANG=zh_CN.utf8ENV LANGUAGE=zh_CN.utf8RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8另:查看容器中是否支持中文编码# localeLANG=zh_CN.utf8LC_CTYPE="zh_CN.utf8"LC_NUMERIC="zh_CN.utf8"LC_TIME="z原创 2022-03-22 17:52:27 · 1072 阅读 · 0 评论 -
kubernetes 滚动升级
指一个service下有多个Pod,更新时每次只更新一部分滚动升级可以达到无感知升级部署,但因为滚动过程中会出现新旧pod同时存在的时刻,所以不保证数据一致性关键字:minReadySeconds: 容器启动后多久开始提供服务,假设服务启动需要10秒-20秒,我们为了避免服务启动期间有流量过来,可以设置为30秒 maxSurge: 升级过程中允许比预设POD数量多出的数量,例如MaxSurges=1,replicas=5,则更新时最多会同时存在Running状态的POD最大6个原创 2022-03-18 14:41:17 · 391 阅读 · 0 评论 -
kubernetes 探针
探针包含三种:Liveness存活探针: 判断容器是否处于运行状态 Readness就绪探针: 判断服务是否正常工作 Startup启动检测: 1.16版本后加入,针对容器内应用服务是否已经启动监控,如果配置了该探针,则会先禁用其他探针,直到成功为止,成功后将不再进行探测 Liveness存活探针在容器启动时标记为成功,防止还没启动完成就被kill掉Readness就绪探针在容器启动时标记为失败,防止还没启动完成就接收流量,避免请求失败只配置Readness探针无法原创 2022-03-18 14:33:31 · 1456 阅读 · 0 评论 -
kubernetes Deployment Pod集群
Deployment是一个kubernetes资源对象,用于创建Pod集群,前身是RC和RS,也是现在创建无状态服务的首选对象。一个简单的Deployment示例:# cat deploy.yaml apiVersion: apps/v1kind: Deploymentmetadata: labels: app: deploy-myapp # 标签需要一致 name: deployment-demospec: replicas: 2 selector:原创 2022-03-16 11:49:37 · 4313 阅读 · 0 评论 -
kubernetes 标签选择器
每个资源可以定义一个或者多个标签,如Deployment、Pod等,定义标签可以用来分组,或者资源匹配。例如service就是通过标签匹配后端的Pod,然后达到负载的目的。网上找的一些常用标签:查看标签:添加标签:第一种,命令方式版本标签:"release" : "stable" , "release" : "canary"... 环境标签:"environment" : "dev" , "environment" : "production" 架构标签:"tie原创 2022-03-15 17:02:45 · 2617 阅读 · 0 评论 -
kubernetes kubectl get --field-selector过滤
我们经常会用到kubectl get来查看资源情况如:kubectl get pod -n xxx kubectl get svc -n xxx但是如果输出太多,可能会有些杂乱我们可能会使用 gerp 来过滤其实kubectl已经给了一个更适合的过滤方法 --field-selector--field-selector 其实就是抓去json的指定key的value例如我想查看一个名称为 nginx-pod 的 pod 可以这样做# kubectl get pod --fie原创 2022-03-15 15:35:34 · 3830 阅读 · 0 评论 -
kubernetes 使用jq命令对资源配置查看
有图形化的直接从图形化可以看到各种资源,如Deployment、Pod等资源的配置这里写一个 jq 命令jq命令允许针对json进行操作,如过滤jq命令centos环境下安装# yum -y install jq假设我们有个文件# cat pod-yaml{ "apiVersion": "v1", "kind": "Pod", "metadata": { "name": "nginx-pod", "namespace":原创 2022-03-15 14:00:33 · 3118 阅读 · 0 评论 -
Pod容器资源限制
pod yamlapiVersion: v1kind: Podmetadata: name: nginx-podspec: containers: - name: nginx-pod image: nginx resources: requests: memory: 100Mi cpu: 50m limits: memory: 200Mi cpu原创 2022-03-14 17:38:03 · 1130 阅读 · 0 评论 -
Pod重启策略
pod yamlapiVersion: v1kind: Podmetadata: name: nginx-podspec: restartPolicy: Always containers: - name: nginx-pod image: nginx关键字:restartPolicy策略:Always pod中容器不论如何停止都将自动重启 OnFailure Pod中容器非正常停止会自动重启,正常停止不会重启 Never Pod中容原创 2022-03-14 16:29:42 · 1230 阅读 · 0 评论 -
kubeadm flannel 网络问题
Get context deadline exceeded原创 2022-02-17 16:49:57 · 1823 阅读 · 1 评论 -
k8s deployment 添加容器hosts解析
spec: hostAliases: - ip: 192.168.0.100 hostnames: - www.aaa.com containers: image: registry-vpc.cn-hangzhou.aliyuncs.com/xxxxx:v33 name: xxxx ports: - containerPort: 48080 pro...原创 2022-01-05 15:10:13 · 4024 阅读 · 0 评论 -
kubernetes 日志收集
本文日志收集流程:k8s 使用 daemonset 创建 filebeat 服务; filebeat 发送日志到 kafka; logstash 收集 kafka 接收到的日志; logstash 发送日志到 ES; kibana 从 ES 提取日志并展示。一、部署kafka参考文章:Dokcer 搭建 kafka_我的喵叫初六的博客-优快云博客pull镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka原创 2021-11-03 12:01:56 · 1608 阅读 · 0 评论 -
rancher高可用安装
kubernetes安装高可用rancher需要安装helm,很简单自行安装即可helm版本要求:本文使用的是已有的https证书(TLS证书),也可以用自建的开始安装:一、添加helm rancher的仓库请将命令中的<CHART_REPO>,替换为latest,stable或alpha。更多信息,请查看选择 Rancher 版本来选择最适合您的仓库。latest: 建议在尝试新功能时使用。 stable: 建议在生产环境中使用。(推荐) alpha:.原创 2021-10-18 14:41:36 · 1057 阅读 · 0 评论 -
执行helm警告kube/config文件不安全问题
# helm listWARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.kube/configWARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /root/.kube/configNAME NAMESPACE REVISION ...原创 2021-10-18 10:19:15 · 1791 阅读 · 0 评论 -
kubernetes kubectl 补全
1.安装bash-completion工具 1 yuminstallbash-completion -y 否则报错:-bash: _get_comp_words_by_ref: command not found2.执行bash_completion 1 source/usr/share/bash-completion/bash_completion 3.加载kubectl completion ...转载 2020-11-06 19:25:48 · 301 阅读 · 0 评论 -
kubernetes学习之路(十三)service(一)
Service 概念 service 是一种可以访问一组 pod 的访问策略,通过 LabelSelector 标签匹配后端 pod,这样无论后端 pod 是增加还是减少,都可以通过 svc 访问到,例如 nginx 指定 svc 地址,那么就相当于代理后端 pod,而不会以为增加 pod 而修改 nginx 配置。 轮询方式只有 rr ,只提供了4层负载能力,也就是不能通过域名或主机名的方式进行负载。Service 类型Clusterlp:默认类型,自动分配一个仅Cluster...原创 2020-07-08 18:58:41 · 289 阅读 · 0 评论 -
kubernetes学习之路(十二)控制器(三)DaemonSet、Job、CronJob
1、DaemonSet什么是 DaemonSet DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 副本。当有 Node 加入集群时,会自动在其增加一个 Pod,简单来说就是在每一个Node上运行一个副本典型用法:运行集群存储 daemon,例如 glusterd、ceph 在每个 Node 上运行日志收集 daemon,如 fluentd、logstash 在每个 Node 上运行监控 daemon,如 Prometheus Node Exporter、colle.原创 2020-07-06 18:18:27 · 167 阅读 · 1 评论 -
kubernetes学习之路(十一)控制器(二)RS、Deployment、Deployment操作
1、RS RC (ReplicationController )主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数 。即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收。 Kubernetes 官方建议使用 RS(ReplicaSet ) 替代 RC (ReplicationController ) 进行部署,RS 跟 RC 没有本质的不同,只是名字不一样,并且 RS 支持集合式的 selectorRS示例:apiVersion:...原创 2020-07-06 16:06:42 · 522 阅读 · 0 评论 -
kubernetes学习之路(十)控制器(一)介绍
什么是控制器 Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为 控制器类型 ReplicationController 和 ReplicaSet Deployment DaemonSet StateFulSet Job/CronJob Horizontal Pod Autoscaling ReplicationController 和 ReplicaSet ReplicationControll原创 2020-07-02 18:01:44 · 159 阅读 · 0 评论 -
kubernetes学习之路(九)Pod 状态解释
挂起 Pending:Pod 已被 Kubernetes 系统接受, 但有一个或者多个容器镜像尚未创建。等待时间包括调度 Pod 的时间和通过网络下载镜像的时间,这可能需要花点时间运行中 Running:该 Pod 已经绑定到了一个节点上, Pod 中所有的容器都已被创建。至少有一个容器正在运行,或者正处于启动或重启状态成功 Succeeded:Pod 中的所有容器都被成功终止,并且不会再重启失败 Failed:Pod 中的所有容器都已经终止,并且至少有一个容器...原创 2020-07-02 14:32:11 · 350 阅读 · 0 评论 -
kubernetes学习之路(八)资源清单
文章内容:资源类型介绍、YAML格式介绍、常用字段说明、Pod生命周期、initC、initC特殊说明、探针-1、探针-2、start、stop、相位资源清单,简单来说就是通过资源清单中的资源项编写剧本yaml文件,实现服务pod化、service、volume等等。资源清单类型名称空间级别:工作负载型资源(workload)PodReplicaSet 用于通过标签创建podDeployment 用于通过ReplicaSet创建podStateful...原创 2020-07-01 19:02:57 · 495 阅读 · 0 评论 -
kubernetes学习之路(七)集群基本操作 命令行创建pod、svc
运行pod使用私有仓库镜像,指定端口为80,指定pod数量为1kubectl run nginx-deployment --image=docker.harbor.com/library/myapp:v1 --port=80 --replicas=1查看查看deploymentkubectl get deployment查看rskubectl get rs查看podkubectl get pod查看pod详细信息kubectl get pod -o wide扩容p原创 2020-06-30 00:48:40 · 1163 阅读 · 0 评论 -
kubernetes学习之路(六)Harbor 镜像仓库
镜像仓库无论是在docker环境还是在kubernetes环境下都是必不可少的一个组件,而构建私有仓库对将来的CI/CD也是非有不可的,内网存取镜像,速度非常快。 Harbor仓库是基于Docker公司开源的registry为基础,提供了管理UI、角色访问控制、日志审计等,通过docker compose进行容器化部署,非常方便。部署Harbor:1、安装docker-compose# 下载安装curl -L https://github.com/docker/compose...原创 2020-06-29 12:11:54 · 416 阅读 · 0 评论 -
kubernetes学习之路(五)安装kubeadm
为什么选择kubeadm安装方式而不是二进制: 首先官方推荐使用kubeadm方式安装,kubeadm安装相对二进制简单很多,且二进制中的组件是通过进程方式运行在主机上,无法做到意外停止自动重启,所以在生产环境下更建议使用kubeadm。如果说安装二进制方式能让初学者更容易理解内部结构,其实kubeadm也可以做到让学习者理解。本次安装使用的是阿里云服务器,可以购买按量付费的服务器,本环境使用了三台2c 8g主机,单台每小时大概五毛钱,不用时可以选择停机不收费模式进行停机,以便下次使用。..原创 2020-06-28 00:45:18 · 378 阅读 · 0 评论 -
kubernetes学习之路(四)网络通讯
同一个pod下容器网络:lo网络模式pod与pod之间的网络:overlay networkpod与service之间的网络:通过节点间iptables规则,新版本可以使用lvsFlannel网络组件: 它的功能是让集群中的不同节点主机创建的docker容器都具有全集群唯一的虚拟ip地址,并且在这些ip地址之间建立一个覆盖网络(overlay network),通过这个覆盖网络,将数据包原封不懂的传递到目标容器内。图中分为两台主机,四个pod。同一台主机上的pod通讯可以使用..原创 2020-06-27 00:57:48 · 169 阅读 · 0 评论 -
kubernetes学习之路(三)Pod
pod概念: pod为kubernetes中最小单位,一个pod中可以有多个容器,每个pod中有一个pause,pod中的容器通过pause可以共享网络和存储,例如一个pod中同时拥有php和nginx,那么nginx如果代理php,只需要使用locahost加端口即可,同样一个pod中的容器使用的端口是不能冲突的。pod控制器类型:RpelicationController:用来确保容器应用的副本数始终保持在用户定义的副本数,就是如果有容器异常推出,会自动创建新的pod来代替;如果容器数量超.原创 2020-06-26 17:01:40 · 324 阅读 · 0 评论 -
kubernetes学习之路(二)组件说明
首先说说集群的节点数量为什么多数采用3、5、7、9这样的结构,因为这样可以避免选举时票数一样造成的选举失败,如4节点两票两票。kubernetes组件架构图:master节点组件:kubectl:kubernetes的命令行操作组件 web UI:web页面控制组件 scheduler:调度器,负责控制任务分发到哪个node上运行 replication controller:简称rc,副本控制器,负责控制副本的数量,如一个任务下pod的数量 api server:核心组件,负责..原创 2020-06-26 15:14:45 · 213 阅读 · 0 评论 -
kubernetes学习之路(一)介绍、特点及学习路线
为什么要用kubernetes: 早期为pass平台,由运维人员进行部署对应的应用,工作量非常大,从而出现了一批自动化产品,如ansible、puppet等,但对于重复性的平台依旧需要重复建设。而pass平台之后,docker成为了新一代的产品,容器化每一个服务,一次镜像制作可创建多个平台。但容器化网络并非如传统网络一样使用物理网卡,而是根据策略使用iptables进行网络转发,这样极大的降低了网络速度。因此出现了一批编排产品,如docker swarm、mesos,其中功能最强大就是我们要学习的ku.原创 2020-06-25 01:38:04 · 645 阅读 · 0 评论