Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linux (debian10) 下部署踩坑 (学习) #3

Open
ifnk opened this issue Feb 15, 2022 · 0 comments
Open

linux (debian10) 下部署踩坑 (学习) #3

ifnk opened this issue Feb 15, 2022 · 0 comments

Comments

@ifnk
Copy link

ifnk commented Feb 15, 2022

安装 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 配置 可以 百度,有很多文章教怎么配)

配置效果如下
image

安装 docker buildx

作者 的 dockerfile 里面 带有 $TARGETPLATFORM TARGETARCH TARGETOS 等参数 ,在debian 里面 跑
make docker-build 会报错
image

询问作者得知要安装 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 加上 国内 源 ,
image

当运行 go download 的时候 我这里也会报错
image
可以 把 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

image

然后 在 执行 make kube-deploy 命令 部署
执行 k get pods -o wide 查看容器 可以 看到 至少有一 个 db 是 跑起来 了…… 别的全失败 了,去看看原因 ……
image

边学习边写 , 没有写完 ,后面 在写 ……

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant