安装 k8s
我本来的系统是 archlinux ,但是 手动装 k8s 装不上…… 后来看到 一个脚本
https://github.com/lework/kainstall 这个 支持 centos ubuntu 和 debian 安装 ,我就 在 本机装了 个 virtualbox ,下载了 debian 的 vdi 虚拟机 文件 装好了 debian 的虚拟机
然后按照 文档说的 下载 好 离线包 和 sh 开始安装
$ bash kainstall-debian.sh init \
--master 10.168.1.250 \ # 这个master 就 是 k8s 的大脑 (也是我的这台虚拟机)
--worker 10.168.1.251,10.168.1.253 \ # 这行可以 去掉 ,因为我电脑内存跑这三个虚拟机 后就没有多少了 ……
--user root \ # 操作系统的 用户名(我虚拟机都设置了 root)
--password root \ # 操作系统的 密码 (我虚拟机都设置了 root)
--port 22 \
--offline-file 1.23.1_debian10.tgz # 这个是 k8s 离线包 因为k8s 下载的话 不翻墙 下不动 ,人家贴心的准备了离线包
装完后 没有 error 都是info 就是 k8s 安装成功了
看下 node
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master-node1 Ready control-plane,master 8h v1.23.1
为了操作方便 shell 使用 了 zsh , 可以 搭配 k8s 官方的 zsh 框架 进行 补全 https://kubernetes.io/zh/docs/tasks/tools/included/optional-kubectl-configs-zsh/
(zsh 配置 可以 百度,有很多文章教怎么配)
配置效果如下
安装 docker buildx
作者 的 dockerfile 里面 带有 $TARGETPLATFORM TARGETARCH TARGETOS 等参数 ,在debian 里面 跑
make docker-build 会报错
询问作者得知要安装 docker buildx https://docs.docker.com/buildx/working-with-buildx/#manual-download
需要在 https://github.com/docker/buildx/releases/tag/v0.7.1 这里面 下载 对应版本 的 可执行文件
然后 把 他 移动到 $HOME/.docker/cli-plugins 这个目录里面 记得改名叫 docker-buildx 并给 可执行权限
然后 运行 docker buildx install 安装 docker-buildx
$ docker build --help
Usage: docker buildx build [OPTIONS] PATH | URL | -
Start a build
可以看到 docker buildx build 就是成功 了
另外 make docker-build 的时候 下载 go 依赖包很慢 需要 给go 加上 国内 源 ,
当运行 go download 的时候 我这里也会报错
可以 把 go download 这一行整行删除 ,因为go build 的时候 也会 下载依赖包的
我这里把 go download 这一行删除 能跑过,不删除 就 报错 ……
安装 istio
先在istio 下载界面 下载 压缩包 https://github.com/istio/istio/releases/tag/1.13.0
解压 后 cd 进去
$ cd istio-1.13.0/bin 找到bin 目录
$ ll
.rwxr-xr-x 95M root 14 Feb 16:28 istioctl
$ cp istioctl /usr/bin/istioctl 把可执行文件 复制到 /usr/bin/istioctl 就可以 全局 使用 了
$ whereis istioctl
istioctl: /usr/bin/istioctl
然后执行
istioctl install --set profile=default -y
安装
创建持久化存储的一些文件
作者 的 mysql.yaml 我这里 没有办法 跑 ,user-db post-db 等 pod 起不来
kubectl describe pod user-db-6b8765cdd5-qzzqh
查看 event
Warning FailedScheduling 110s default-scheduler 0/1 nodes are available: 1 persistentvolumeclaim "user-db" not found.
Warning FailedScheduling 30s (x3 over 109s) default-scheduler 0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims.
说却 pvc ,问了作者才知道 他 苹果 的 pv sc 都是配好的…… linux 下 没有默认的 要自己配置 才行
先创建 sc
sc.yaml
# sc 抽象层的磁盘 类型
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage # sc 名字
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
因为项目有 4 个 mysql.yaml 所以创建 4 个 对应的pv
以 user-pv.yaml 为例 ,别的都是 metadata.name 换个对应的 名字就行了
apiVersion: v1
kind: PersistentVolume
metadata:
name: user-pv # 这里 对应 comment pvc 的话就 叫 comment-pv
labels:
type: local
spec:
storageClassName: local-storage # sc 名称
capacity:
storage: 10Gi
accessModes: # 卷可以被一个节点以读写方式挂载
- ReadWriteOnce
local: # 节点上面 挂在 pv 的 路径
path: "/mnt/data"
nodeAffinity: # 指定 哪一个节点来 放pv 挂载的 路径
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-master-node1 # 这个node 可以根据 kubectl get node 获取 节点名字
接着修改 作者 的 mysql.yaml 加上 两行 分别绑定 sc 和对应 的 pv
然后 在 执行 make kube-deploy
命令 部署
执行 k get pods -o wide
查看容器 可以 看到 至少有一 个 db 是 跑起来 了…… 别的全失败 了,去看看原因 ……
边学习边写 , 没有写完 ,后面 在写 ……