- 博客(315)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
原创 k8s operator从0到1实践
新建名为easyservice-sample的自定义资源实例,创建副本数量和对应的nodeport端口。对象结构(api)、控制器(controller)修改完毕后,需要更新crd的定义。使用脚手架工具,能生成项目模板,开发人员只需要关注核心逻辑和方法即可。当CR新建出来后,controller就会收到相应的事件变更。推荐使用docker-desktop,本地单机集群。1、制作推送controller镜像。2、把controller部署到集群。登录到在集群master上操作。1、将CRD安装到集群。
2024-01-14 22:13:53
809
1
原创 Mysql-索引
如果需要排序的列的总大小加上order by列的大小超过了 max_length_for_sort_data定义的字节,mysql就会使用双路排序,当任何需要的列(甚至不是用来order by的列)是text.blob的时候,也会使用双路排序,(可以使用substtring() 把这些列转化为可以单路排序的列)。索引下推 (Using index condition)索引覆盖 (Using index)
2023-08-27 15:18:18
472
原创 Beyond Compare和git merge、git rebase
【代码】Beyond Compare和git merge、git rebase。
2023-07-30 23:24:45
526
原创 golang/goland memo
它允许开发者在不同的项目中使用不同版本的依赖包,并且可以自动解决依赖关系,避免了传统的手动管理依赖包的麻烦。启用此选项后,Goland 将会自动检测项目中是否存在 go.mod 文件,并自动加载其中的依赖包信息。同时,Goland 还会自动更新 go.mod 文件,以保证项目中所使用的依赖包版本与 go.mod 文件中指定的版本一致。启用 Go Modules 集成支持后,还可以在 Goland 中使用一些特定的命令来管理依赖包,例如 “go mod tidy”、“go mod vendor” 等。
2023-04-28 14:57:34
1337
3
原创 Mac 外接键盘Command键( Windows 徽标键)失效
同时按下 Win + Fn 组合键会导致 Win 键失灵,即锁定 Win 键!
2023-01-29 14:53:09
9092
2
原创 git memo
git branch -a: 可以查看本地分支和远程分支情况git remote show origin: 查看本地分支和追踪情况git remote prune origin: 同步远程分支情况到本地,如果远程删除了分支,本地就会同步过来。git branch -D [branch name]: 删除本地分支git push origin --delete Chapater6:可以删除远程分支Chapater6git cherry-pickgit cherry-pick 教程......
2022-12-24 12:11:10
1188
原创 CNAME记录和A记录
假如用户拥有如下几个子域:用户希望这些子域指向主域名http://test.com,这时候就可以为这些子域创建相应的CNAME记录,如下表所示:如果服务器的IP地址发生更改,则只需更新一个A记录,并且所有子域都会自动更新,因为所有CNAME记录都指向带有A记录的主域A记录和CNAME记录两种记录方式,给了用户更大的自由度,便于大规模域名系统的管理维护。
2022-12-06 21:44:56
1690
原创 docker-desktop windows支持挂载hostpath
docker-desktop在windows系统中支持容器方案主要采用两种方式。
2022-10-31 23:16:01
1733
原创 Job和CronJob
Job 会创建一个或者多个 Pods,并将继续重试 Pods 的执行,直到指定数量的 Pods 成功终止。 随着 Pods 成功结束,Job 跟踪记录成功完成的 Pods 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。并行jobCronJob定时任务:CronJob 创建基于时间可重复调度的 Jobs。简称cj下面的 CronJob 示例清单会在每分钟打印出当前时间和问候消息:...
2022-07-06 21:55:30
256
原创 StatefulSets
StatefulSets(sts)StatefulSet 是用来管理有状态应用的工作负载 API 对象。StatefulSet 用来管理某 Pod 集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符。StatefulSets 对于需要满足以下一个或多个需求的应用程序很有价值:稳定的、唯一的网络标识符 - pod name不会改变。稳定的、持久的存储。有序的、优雅的部署和缩放。有序的、自动的滚动更新 - 可以做部分pod更新,灰度发布。查看本机的storageclass,利用
2022-05-22 15:43:51
826
原创 k8s各种port
在编排kubernetes时,Deployment的Pod项有containerPort,Service文件里的port,targetPort, nodePort,这些pod概念有些时候可能会让人感到非常困惑,这里通过示例来简单介绍各种port的含义deploy yamlapiVersion: apps/v1kind: Deploymentmetadata: name: test-deploy labels: app: test-deployspec: replicas:
2022-04-25 00:20:23
920
原创 k8s-configmap和secret
ConfigMapConfigMap 并不提供保密或者加密功能。 如果你想存储的数据是机密的,请使用 Secret, 或者使用其他第三方工具来保证你的数据的私密性,而不是用 ConfigMap。如何在容器中监听configMap的变化viper参考ConfigMap...
2022-04-24 22:23:08
507
原创 k8s-RBAC与SA
文章目录RBACRole和RoleBindingRoleRoleBinding验证ClusterRole和ClusterRoleBindingClusterRoleClusterRoleBinding验证定义ServiceAccount参考RBAC基于角色的访问控制(Role-Based Access Control, 即”RBAC”)使用”rbac.authorization.k8s.io” API Group实现授权决策,允许管理员通过Kubernetes API动态配置策略。基于RBAC配置U
2022-04-24 22:10:47
615
原创 k8s client-go修改node label
package mainimport ( "context" "encoding/json" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/tools/clientcmd" "os" "os/user" "strings" "k8s.io/client-go/kubernetes")func main() { // o
2022-04-24 21:40:17
2070
原创 sidecar模式
sidecar简单的说,一个pod内有多个容器应用在同时工作,相互协同,完成特定需求。sidecar的思想核心就是:不侵入主容器的前提下,可以进行服务功能扩展。一般都是一些共性的能力,比如说:日志代理/转发,例如 fluentd;Service Mesh,比如 Istio,Linkerd;代理,比如 Docker Ambassador;探活:检查某些组件是不是正常工作;其他辅助性的工作,比如拷贝文件,下载文件等;k8s不会明显区分主容器与sidecar容器,如果主容器与sidecar容
2022-04-09 16:46:04
1539
原创 map、切片和string之间的转换
package mainimport ( "encoding/json" "fmt")func main() { var mp map[string]string mp = make(map[string]string) mp["hello"] = "world" mp["test"] = "json" // map to string mpStr, _ := json.Marshal(mp) fmt.Println(string(mpStr)) // string to m
2022-03-22 22:54:55
864
1
原创 golang cmd执行外部程序
Kill进程及其子进程,以及处在sleep或者阻塞状态中的程序,如果使用cmd.Process.Kill()是没发达到这些效果。cmd := exec.Command("/bin/sh", "-c", "...........")// Go会将PGID设置成与PID相同的值cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)egpackag
2022-02-12 14:47:59
2251
原创 集群内外访问pod的方式
文章目录集群内访问service直接访问集群pod的clusterIP直接访问服务名通过环境变量访问集群外访问servicehostNetworkhostPortNodePortloadbalancerIngress在 Minikube 环境中使用 NGINX Ingress 控制器配置 Ingress参考集群内访问service直接访问集群pod的clusterIPservice的clusterIP即:service的虚拟IP直接访问服务名通过环境变量访问示例:server.yamlki
2022-01-31 16:51:55
5459
1
原创 k8s安装使用metrics-server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.0/components.yaml如果这时候查看deployment提示出错:$ kubectl describe pod metrics-server-65b979d49c-bm4vz -n kube-system······Events: Type Reason Age .
2022-01-30 21:43:37
3039
原创 在kubernetes部署发布go应用程序
dockerfile文件放在golang程序根目录下:FROM golang:1.17.3WORKDIR /appCOPY . /appRUN go build -o go-web .ENTRYPOINT ["/app/go-web"]执行以下指令:docker build -t test/go-app:v1.0.0 .docker push test/go-app:v1.0.0 // push到镜像中心...
2022-01-30 11:06:36
988
原创 k8s基操
文章目录环境配置Linux安装Docker安装kubectl安装minikubemacOS常用操作环境配置Linux安装DockerDocker学习笔记安装kubectlcurl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl”sudo install -o root -g root -m 0755 kubectl /usr
2021-12-01 23:51:51
776
原创 VNC How To
测试环境:Distributor ID: UbuntuDescription: Ubuntu 16.04.6 LTSRelease: 16.04Codename: xenial安装服务端sudo apt-get install vnc4serversudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminalsudo apt-get install xfonts-100
2021-10-21 10:36:56
96
原创 C/C++逻辑操作
按位操作按位与运算符(&):例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。按位或运算符(|):例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。按位异或运算符(^):参加运算的两个数据,按二进制位进行“异或”运算。运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;即:参加运算的两个对象,如果两个相应位为“异
2021-10-19 23:44:25
543
原创 数据结构-散列表
基本概念散列是一种用于以常数平均时间执行插入、删除、和查找的技术,通过关键字key,经由哈希函数,映射到值val的存储地址。装载因子:散列表中元素个数 除以 散列表的大小。是表示 Hsah 表中元素的填满的程度,若加载因子越大,则填满的元素越多,这样的好处是:空间利用率高了,但冲突的机会加大了。反之,加载因子越小,填满的元素越少,好处是冲突的机会减小了,但空间浪费多了。散列冲突:两个不同的key映射到了同一个值的时候。素数:只能被1和自身整除的数(如 2n−12^{n}-12n−1或者2n+12^
2021-10-10 22:13:02
333
原创 广度优先搜索BFS
广度优先搜索是对图中的边进行系统性的探索来发现可以从源节点s到达的所有节点。该算法能够计算从源节点s到每个可达到的节点的距离(最少的边数),同时生成一棵"广度优先搜索树",该树以源节点s为根节点,包含所有可以从s到达的节点,对于每个从源节点s可以到达的节点v,在广度优先搜索树里从节点s到节点v的简单路径所对应的的就是图中从节点s到节点v的最短路径,即包含最少边数的路径。其核心思想就是用一个FIFO的队列维护遍历的节点,然后从队列中去取出节点依次往深层次中遍历。
2021-10-05 23:13:48
84
原创 docker数据持久化
bind mount: 可以存储在宿主机器任何一个地方,但是会依赖宿主机器的目录结构,不能通过docker CLI 去直接管理,并且非docker进程和docker进程都可以修改该路径下的文件volume: 在宿主的文件系统上的docker工作路径下创建一个文件夹(/var/lib/docker/volumes)来存储数据,其他非docker进程是不能修改该路径下的文件,完全由docker来管理tmpfs : 无论是在Docker主机上还是在容器内,tmpfs挂载都不会持久保存在磁盘上,它会将信息存储在
2021-10-05 14:32:46
273
原创 C++11_4种类型转换
* 去掉const/volatile属性用const_cast* 多态中的向下转换用dynamic_cast* 除去上两种的转换,其他转换都可以用static_cast* 针对static_cast无法转换(编译报错的)则可以使用reinterpret_cast强制底层二进制位的转换。
2021-10-04 22:26:16
360
原创 虚函数和虚继承
虚函数表指针:vfptr -> 指向一个虚函数表。虚基类指针:vbptr -> 指向一个虚基类表。带虚函数的多重继承的内存布局#include <iostream>using namespace std;class Base1{public: //三个虚函数 virtual void f() { cout << "Base1::f" << endl; } virtual void g() { cout << .
2021-10-03 12:34:29
246
原创 docker搭建QtCreator开发环境
当我们在开发一个新项目或者有新员工入职时,往往会为折腾开发环境而折腾好久。但docker则可以为我们提供这样一个标准化的镜像方案,大家只需拉取开发镜像即可,而无需去从头配置开发环境。本文以配置ubuntu16.04的Qt开发环境为例加以说明,如何制作一个开发镜像。
2021-10-02 19:47:43
10497
2
原创 dockerfile-新增用户并赋予sudo权限以及指定密码
Dockerfile:# 基础镜像FROM ubuntu:16.04# build参数ARG user=test# 元数据LABEL maintainer="fzzjoy" email="fzz_joy@163.com"# 安装依赖RUN apt-get update && apt-get install sudo # 添加用户:赋予sudo权限,指定密码RUN useradd --create-home --no-log-init --shell /bin/ba
2021-10-02 18:04:53
14955
原创 Linux查看进程内存空间分布 - pmap
The pmap command reports the memory map of a process or processes.pmap 提供了进程的内存映射,用于显示一个或多个进程的内存状态,报告进程的地址空间和内存状态信息。
2021-09-30 23:43:30
4401
基于STM32高精度频率计的设计
2014-08-10
关于C语言OJ的一道题:Time Limit Exceeded
2015-04-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人