0.1、索引1、未知的枚举值我们现在定义一个类型是unit32的Status,他可以作为枚举类型,我们定义了3种状态type Status uint32 const ( StatusOpen Status = iota StatusClosed StatusUnknown )其中我们使用了iota,相关的用法自行google。最终对应的状态就是:0-开启状态,1-关闭状态,2-未知状态现在
老外的分享 package main import ( "reflect" ) type TryCatch struct { errChan chan interface{} catches map[reflect.Type]func(err error) defaultCatch func(err
前言很久以前就听过过内存逃逸这个词, 最近了解了一下, 才发现是个很简单的概念. 只要把前言部分看完, 就已经了解了. 来吧… 在介绍内存逃逸之前, 我们先用C语言来引出这个概念. 我们的进程在内存中有栈内存和堆内存的概念, 栈内存是函数执行的局部内存, 会随着函数的结束而全部释放, 而堆内存是需要
前言 在我前面一篇文章Golang受欢迎的原因中已经提到,Golang是在语言层面(runtime)就支持了并发模型。那么作为编程人员,我们在实践Golang的并发编程时,又有什么需要注意的点呢?下面我会跟大家详细的介绍一些在实际生产编程中很容易踩坑的知识点。 CSP 在介绍Golang的并发实践前
前言 很久以前就听过过内存逃逸这个词, 最近了解了一下, 才发现是个很简单的概念. 只要把前言部分看完, 就已经了解了. 来吧… 在介绍内存逃逸之前, 我们先用C语言来引出这个概念. 我们的进程在内存中有栈内存和堆内存的概念, 栈内存是函数执行的局部内存, 会随着函数的结束而全部释放, 而堆内存是需要手动申请和管理的一部分内存. 这个概念大家都比较熟悉了, 在此就不再赘述. c语言版本 在C中,
1. Volume原理 想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的。Docker镜像是由多个文件
通过前面两篇文章,我们已经有了一个“嗷嗷待哺”的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因
一、自定义镜像有两种方法: 1、docker commit 启动一个容器,增删改查,安装软件,修改配置文件等 ; 另存为一个新镜像 docker
容器管理 容器,就是Linux被严格限制资源约束(cgroups),安全约束(Unix权限,capabilities,SELinux,AppArmor,seccomp等)
目录一、网络前提条件-网络模型二、需要解决的网络问题1.容器和容器之间的网络2.pod与pod之间的网络同一台node节点
官网 https://golang.google.cn/dl/ Linux环境: cd /data/www wget https://golang.google.cn/dl/go1.14.7.linux-amd64.tar.gz // 解压并安
虽然通过kube-proxy可以帮助实现集群内外的pod相互通信,对这些pod做负载均衡(用户态userspace轮询算法,性能低也不安全)和
理解etcd性能:etcd集群架构图,包含raft层,storage层(storage层包含treeindex层和boltdb底层持久化存储key-value层),它们每一层都可能造成性能损失,raft层需要网络同步数据,网络io节点之间的rtt和带宽都会影响etcd性能,另外wal也会受到磁盘io
Docker kubernetes 描述 ENTRYPOINT command 容器中运行的可执行文件 CMD args 传递给可执行文件的参数 完整的情况分类如下
$ nsenter --help 用法: nsenter [options] <program> [<argument>...] Run a program with namespaces of other processes. 选项: -
当外部服务通过externalIP连接到服务时,pod所在节点并不一定是提供对外访问服务的节点,所以会有网络跳转,影响性能,这时设置externalTrafficIP=local防止网络跳转,意思就是优先选择本地的pod,但是有缺点: 1,会影响pod访问分配不均,比如节点1有一个pod,节点2有两
go-redis使用安装:在GOPATH路径下面执行命令:go get -u github.com/redis/go-redis -u:表示update 文档地址: https://redis.uptrace.dev/zh/ https://pkg.go.dev/github.com/go-redis/redis 连接package main import (
首先在workspace工作空间gocode下面生成一个go.work文件,使用命令:go work init ./a工程 ./b工程,这里面要列出所有的工程go.work文件内容:go 1.20 use ( ./src/chapter12 ./src/chapter13 ./src/chapter14 ./src/chapter15 )然后再每个工程下面生成一个
在k8s中监控和日志属于生态一部分,并不是核心组件,定义了介入的接口标准和规范,供其他厂商组件快速集成。监控类型:资源监控,性能监控apm监控,安全监控,事件监控,监控的接口标准:resource metrice(实现类metrics-server常见有节点级别,pod级别,namespace级别,
k8s通过csi snapshot controller来实现存储快照功能,可以快速restore,可以快速复制以及迁移等操作。他设计理念跟PVC和pv很像,volumnsnapshot相当于PVC,volumnsnapshotclass相当于storageclass集群管理员,volumnsnap
k8s网络模型约法三章:任意两个pod之间可以直接通信,无需经过显示使用nat来接受数据和地址的转换;node和pod直接通信,无需明显地址转换;pod看见自己的ip跟别人看见IP是一样的,无需转换。 network namespace是实现网络虚拟化的内核基础,创建了隔离的网络空间,拥有独立的附属
探针监测,实时进行观测,资源使用情况,日志,liveness(存货探针,失败之后会杀掉pod,支持重新拉起pod)和readness(就绪探针,失败之后切断流量,启动之后无法立即对外服务),三种方式:httpget请求,exec执行容器命令,TCPsocket(容器的IP和port),三种命令都有的
k8s通过pod部署应用,但是pod生命周期短暂,删除了重启之后IP地址就变了,这时需要service服务发现,对内的话对所有pod提供统一的访问入口,让pod网络暴露出去,对外的话提供统一的访问地址,包含负载均衡。 创建完成service有一个唯一的ClusterIP字段,它通过service的唯
etcd是一个分布式,可靠的key-value存储系统,etcd集群通常有3个或5个节点组成,之间通过raft一致性算法进行协同,算法会选举主节点作为leader,由leader负责数据的同步和数据分发,当leader出现故障会选举另一个节点作为leader,并重新完成数据同步呢分发。 在整个架构中
容器技术:最下面是磁盘,容器镜像是放在磁盘disk上的,上层是容器引擎,容器引擎可以是docker,也可以是其他,引擎向下发一个请求比如创建容器,这个时候引擎就把磁盘上面的容器镜像运行成宿主机上的一个进程。 对于容器来说,最重要怎么保证进程用到的资源被隔离和被限制,在Linux内核上面有cgroup
helm:开发者把需要的资源文件包装起来,通过模板化方法,将一些可变字段暴露给用户,用户就可以自己设置了,放在指定的仓库中供用户下载,对用户而言,使用helm一条简单命令就可以install安装,卸载uninstall和升级update。使用create创建命令之后会生成charts.yaml(ch
entrypoint设置容器的入口程序,就是容器启动时执行的程序,docker run中最后的命令将作为参数传给入口程序,它有两种格式exec和shell,它们之间区别在于指定的命令是否在shell中运行,其中shell底层使用/bin/sh -c COMMAND运行,就是说主进程shell进程,后
1,查出已经停止的容器:docker ps -a 2,使用命令启动容器:docker start -ia containerId
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号