vagrant+ansible安装k8s集群

已过时,不可用 部署环境: ubuntu20.04, 8G+4核 kubernete版本: 1.22.1 1. 安装vagrant和ansible 按官网教程即可 2. Vagrantfile 建立如下目录 k8s-cluster ├── kubernetes-setup │ ├── master-playbook.yml │ └── node-playbook.yml └── Vagrantfile 其中,Vagrantfile内容如下: IMAGE_NAME = "bento/ubuntu-16.04" N = 2 Vagrant.configure("2") do |config| config.ssh.insert_key = false config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 end config.vm.define "k8s-master" do |master| master.vm.box = IMAGE_NAME master.vm.network "private_network", ip: "192.168.50.10" master.vm.hostname = "k8s-master" master.vm.provision "ansible" do |ansible| ansible.playbook = "kubernetes-setup/master-playbook.yml" ansible....

September 6, 2021 · 4 min · 李昌

使用kubeadm安装单节点Kubernetes

环境:ubuntu-20.04, kubernetes:v1.22.1 1. 安装docker 安装时有可能会遇到网络问题,你可以选择换源或是为apt设置代理,设置代理的方法见这里 更新源镜像并安装依赖 sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release 安装docker 官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 设置稳定版本 echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs)stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 安装docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd....

September 4, 2021 · 2 min · 李昌

为apt设置代理

1. 临时设置 sudo apt-get -o Acquire::http::proxy="http://127.0.0.1:8000/" update 2. 永久设置 创建/etc/apt/apt.conf touch /etc/apt/apt.conf 写入如下内容: Acquire::http::Proxy "http://yourproxyaddress:proxyport"; 如果proxy需要密码,则格式如下: Acquire::http::Proxy "http://username:password@yourproxyaddress:proxyport"; Reference: https://www.jianshu.com/p/fdae9cb5181b https://askubuntu.com/questions/257290/configure-proxy-for-apt

September 3, 2021 · 1 min · 李昌

k8s中的apiVersion

apiVersion可能的字段值: Kind apiVersion CertificateSigningRequest certificates.k8s.io/v1beta1 ClusterRoleBinding rbac.authorization.k8s.io/v1 ClusterRole rbac.authorization.k8s.io/v1 ComponentStatus v1 ConfigMap v1 ControllerRevision apps/v1 CronJob batch/v1beta1 DaemonSet extensions/v1beta1 Deployment extensions/v1beta1 Endpoints v1 Event v1 HorizontalPodAutoscaler autoscaling/v1 Ingress extensions/v1beta1 Job batch/v1 LimitRange v1 Namespace v1 NetworkPolicy extensions/v1beta1 Node v1 PersistentVolumeClaim v1 PersistentVolume v1 PodDisruptionBudget policy/v1beta1 Pod v1 PodSecurityPolicy extensions/v1beta1 PodTemplate v1 ReplicaSet extensions/v1beta1 ReplicationController v1 ResourceQuota v1 RoleBinding rbac....

September 2, 2021 · 1 min · 李昌

ORM之sqlc

1. 安装sqlc go get github.com/kyleconroy/sqlc/cmd/sqlc 2. 基本使用 建立基本项目结构 mkdir sqlc-demo cd sqlc-demo go mod init sqlc-demo 在sqlc-demo中建立如下目录结构: . ├── db │ ├── queries │ ├── schema │ └── sqlc └── go.mod 其中query中存储查询语句,schema中存储数据库表结构,sqlc中存储生成的代码。 基本表结构 sqlc-demo/db/schema/table.sql CREATE TABLE "accounts" ( "id" bigserial PRIMARY KEY, "owner" varchar NOT NULL, "balance" bigint NOT NULL, "currency" varchar NOT NULL, "created_at" timestamptz NOT NULL DEFAULT (now()) ); CREATE TABLE "entries" ( "id" bigserial PRIMARY KEY, "account_id" bigint NOT NULL, "amount" bigint NOT NULL, "created_at" timestamptz NOT NULL DEFAULT (now()) ); CREATE TABLE "transfers" ( "id" bigserial PRIMARY KEY, "from_account_id" bigint NOT NULL, "to_account_id" bigint NOT NULL, "amount" bigint NOT NULL, "created_at" timestamptz NOT NULL DEFAULT (now()) ); 配置文件 sqlc-demo/sqlc....

August 22, 2021 · 3 min · 李昌

数据库版本管理-migrate

migrate是一个golang写成的数据库版本迁移工具,可以用来方便的对数据库进行迁移和回退。 Github上有详细的教程等:https://github.com/golang-migrate/migrate 在安装时可能需要指定所用的驱动,否则会因缺少驱动无法连接数据库,例如go install -tags mysql github.com/golang-migrate/migrate/v4/cmd/migrate 建立目录 mkdir -p migrate-demo/db cd migrate-demo/db mkdir ddl mkdir -p schema/blog 现在migrate-demo目录下结构如下: . └── db ├── ddl └── schema └── blog 其中,ddl中存储建库的sql文件,schema存放建表的sql文件 建库 建库 vim db/ddl/blog.sql CREATE DATABASE IF NOT EXISTS blog DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; build镜像 编写Dockerfile vim db/Dockerfile FROMmysql:5.7COPY ./ddl /docker-entrypoint-initdb.d/ENV MYSQL_ROOT_PASSWORD=admin123 复制到/docker-entrypoint-initdb.d目录下的sql脚本会被自动执行 docker build -t mysql-demo -f ./Dockerfile . build成功后,使用docker images命令查看镜像:...

August 15, 2021 · 1 min · 李昌

WSL2-不输Mac的开发体验(三):WSL2中使用docker&k8s

1. docker for wsl2 在wsl2中使用docker的最佳实践不是在wsl2中安装docker,而是安装docker desktop: 从docker官网下载并安装完成后,打开docker desktop,选择setting->General,确保Use the WSL 2 based engine选项被勾选,然后选择右下角Apply&Restart。 重启docker desktop后,再次打开设置,确保setting->Resources->WSL INTEGRATION选项页中你的WSL发行版被勾选。 完成以上步骤之后,打开你的wsl, 输入docker: 出现这一堆说明安装成功。 使用docker run helloworld验证你的docker可以正常启动容器。 如果输入docker命令后无法启动,可以尝试sudo docker 2. k8s for wsl2 安装了docker desktop后,可以通过setting->Kubernetes,勾选Enable Kubernetes来为你的wsl提供k8s服务,但由于网络问题,通常不可能成功。 所以我们要"换源"。 打开setting->Docker Engine,将右侧配置文件改为: { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ], "insecure-registries": [], "debug": false, "experimental": false, "features": { "buildkit": true } } Apply&Restart,重启docker desktop。 现在我们还需要一些额外的镜像。 clone AliyunContainerService/k8s-for-docker-desktop 这个项目。 git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git 查看自己的docker desktop上Kubernetes的版本。 可以看到我们这里是v1.21.2。相应的,我们进入刚才clone的文件夹下,切换到v1.21.2分支 git checkout v1.21.2 切换分支后,在当前目录下执行:...

August 12, 2021 · 1 min · 李昌

WSL2-不输Mac的开发体验(二):WSL2的网络问题

1. 代理服务 1.1 获取Windows主机ip并使用其代理 可以在wsl中安装代理软件,但如果win主机上也有代理软件的话,会感觉有点乱。这里让wsl使用主机的代理。 我使用的代理软件是clash,这里首先要确保clash允许局域网 确认完clash支持局域网后,我们来看如何从wsl中获取win主机的ip地址。 在Windows主机上,我们可以用ipconfig命令来查看本地的ip地址 ipconfig 如图所示,命令行输出了在wsl网络中Win主机的ip地址。(wsl和windows处于一个网络中,这里得到的是windows在这个网络中的ip地址)。 如果我们想使用windows的代理,那么可以使用如下命令(在wsl中): export ALL_PROXY="http://172.28.48.1:7890" 这里, 172.28.48.1是Windows在这个网络中的ip地址,7890是代理接口。 通过访问google查看是否代理成功: 1.2 使用脚本自动获取ip地址并设置代理 通过1.1我们知道,可以在Windows主机中获取其在wsl网络中的ip地址,那我们是否可以在wsl中获取到这个地址呢? cat /etc/resolv.conf 得到类似下面的输出: # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: # [network] # generateResolvConf = false nameserver 172.28.48.1 这里的nameserver,是不是就和我们在Windows下获取到的ip地址是一样的。 我们通过一个脚本来自动获取到这个ip地址,并将其设置为代理地址: #!/bin/bash host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ") # 获取ip地址 echo $host_ip # 输出ip地址 export ALL_PROXY="http://$host_ip:7890" # 设置代理,7890为我的代理端口 curl -I https://www....

August 10, 2021 · 2 min · 李昌

pm2使用指南

1. 安装pm2 npm install pm2 -g 或 yarn global add pm2 使用pm2 -v查看版本号 2. 基本使用 2.1 启动应用 pm2 start app.js # 不止是js文件,其他可执行文件也可以执行 pm2 start script.sh # 启动bash脚本 pm2 start python3 -- app.py # -- 后跟要传给命令的参数 pm2 start binary -- -port 8080 在启动应用时还有一些参数 --name <app_name> # 为应用设置一个名字 --watch # 监视源文件并在源文件存在更改时重启应用 --max-memory-restart <200MB> # 设置应用占用内存上限 --log <log_path> # 设置log文件路径 -- arg1 arg2 arg3 # 传递参数 --restart-delay <delay in ms> # 重启前延时 --time 在日志前增加时间戳 --no-autorestart # 不要自动重启 2....

August 6, 2021 · 5 min · 李昌

多版本npm解决方案

1. nvm install curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash 安装完毕后会提示你让你将以下命令加入你的配置文件中 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion 默认情况下,已经加入你的~/.bashrc文件中,如果你使用的是zsh,那么就需要手动将其添加到~/.zshrc中 2. 常用操作 列出本地所有npm版本 nvm ls 列出可获取的所有版本 nvm ls-remote 安装指定版本 nvm install 14 # 14是版本号 指定使用某个版本 nvm use 14

August 6, 2021 · 1 min · 李昌