美文网首页
记录一次真实迁移经历

记录一次真实迁移经历

作者: H_appiness | 来源:发表于2020-03-08 19:25 被阅读0次

迁移GitHub Pages到k8s

背景:我的个人导航网站https://www.k8s.fit/原来是在GitHub Pages上的,由于在国内访问GitHub Pages速度真的感人,从而产生了一个想法:把GitHub Pages迁移到k8s内,这样不仅解决了访问速度慢的问题,也间接的锻炼一下自己对k8s的实际操作能力!
废话不多说,直接上操作的过程!

整体思路:

  • 基于nginx镜像把代码打包进去即可
  • docker环境下跑通然后上kubernetes
  • 使用cert-manager自动签发证书

步骤一

把github上源码克隆到本地并重命名

git clone https://github.com/xxx/xxx.git
mv xxx.git html

步骤二 - 编写dockerfile

vim Dockerfile

FROM nginx:1.9.1
MAINTAINER Happiness-lijian      
COPY ./html /usr/share/nginx/html

# 解析:基于nginx:1.9.1镜像(基础镜像一定要固定版本!!!)   拷贝当前目录下的html目录到nginx镜像的默认目录/usr/share/nginx/html
# 接下来构建镜像,确保当前上下文目录下只有html目录和Dockerfile,避免把无用的东西构建到镜像中去,形成臃肿的镜像

docker build -t xxx/nginx:v1 .

步骤三 - 测试镜像

步骤二完成后,执行如下命令来测试镜像是否可用

docker run -dit --name nginx -p 3800:80 xxx/nginx:v1

# 解析:运行xxx/nginx:v1名为nginx的镜像,暴露出3800端口到物理机
# 验证:局域网内机器访问 物理机IP:3800查看是否成功

## 运行成功的镜像push到你的仓库中

步骤四 - 使用kubernetes运行该镜像

vim daohang.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: daohang
  name: daohang
  namespace: daohang
spec:
  replicas: 1
  selector:
    matchLabels:
      app: daohang
  template:
    metadata:
      labels:
        app: daohang
    spec:
      containers:
      - image: xxx/nginx:v1
        name: daohang
        resources:
          limits:
            cpu: 2000m
            memory: 1Gi
          requests:
            cpu: 1000m
            memory: 1000Mi
      nodeName: k8s-node2
---
apiVersion: v1
kind: Service
metadata:
  name: daohang-svc
  namespace: daohang
  labels:
    app: daohang
spec:
  type: NodePort
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
      name: http                                                                      
      nodePort: 30800
  selector:
    app: daohang

# 解析:如上:我这里使用Deployment控制器来运行该镜像,并指定了其运行的节点
# 部署该文件

kubectl apply -f daohang.yaml

步骤五 - 测试是否生效

# 查看其是否正常运行

kubectl get pod,svc -n daohang

NAME                           READY   STATUS    RESTARTS   AGE
pod/daohang-68fd898975-svj2r   1/1     Running   0          102m

NAME                  TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/daohang-svc   NodePort   10.244.78.194   <none>        80:30800/TCP   102m

# 验证:局域网内机器访问 nodeIP:30800查看是否成功

步骤六 - 使用cert-manager自动签发证书

vim ingress-daohang.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: daohang-ingress
  namespace: daohang
  annotations:
    kubernietes.io/ingress.class: "nginx"
spec:
  tls:
  - hosts:
    - www.k8s.fit
    secretName: daohang-tls
  rules:
  - host: www.k8s.fit
    http:
      paths:
      - path: /
        backend:
          serviceName: daohang-svc
          servicePort: 80
---
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: 15110264730@163.com
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx
---
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: daohang
  namespace: daohang
spec:
  secretName: daohang-tls
  issuerRef:
    name: letsencrypt-prod
    kind: ClusterIssuer
  duration: 2160h
  renewBefore: 360h
  keyEncoding: pkcs1
  dnsNames:
  - www.k8s.fit                                           

# 部署该文件

kubectl apply -f ingress-daohang.yaml

关于cert-manager查看上篇文章 Kubernetes安装cert-manager(二)

关于cert-manager查看上篇文章 Kubernetes安装cert-manager(一)

总结:

基本上所有的操作步骤和注意事项都已经写在上面了,整体来说,迁移过程不是特别费事,稍微重要的一点就是在编写Dockerfile的时候,不需要编译的就这样。需要编译的要稍微复杂点。另外就是每做一步就要测试验证一步,以免最后出现问题导致思路混乱找不到下手点来排除故障。

最后:保留好步骤二里的Dockerfilehtml目录,假如后期对代码进行更改(增加/删除/更改)只需编辑源代码文件后重新build打一个新的TAGpush到你的仓库中去。kubernetes这边直接使用如下命令进行替换镜像即可:

# 假设新TAG是v2

kubectl set image deploy nginx nginx=nginx:v2

# 解析:更改名为nginx的deployment控制器内名为nginx的container的镜像为nginx:v2

相关文章

  • 记录一次真实迁移经历

    迁移GitHub Pages到k8s 背景:我的个人导航网站https://www.k8s.fit/原来是在Git...

  • 公众号迁移注意事项

    公众号迁移(A迁移到B)1、300元审核费用,申请一次,约1-7天完成2、迁移的数据包括:已关注的粉丝、违规记录、...

  • 一次真实经历

    10月初, 父母回爷爷家,我独自一人在家。哦,忘了自我介绍了,我是一名苦逼高三党。请允许我先吐槽一下:高三不是人吗...

  • 一次真实经历

    局领导分下任务:抽调部分老师去外县摸底检查各村疫苗接种进度情况。 对长期生活在社会底层的人来说,一旦被放在中心位置...

  • 一次真实经历

    2020.05.17下午我莫名其妙地钻进了5路公交车,一群老太太正在聊着闲天: “你家孙子怎么还不结婚了,都96年...

  • 涅槃重生——记录一次真实的痛经经历

    刚刚苏醒的我,浑身湿透,手脚终于有了些力气。回想刚才的经历,深有涅槃重生的感觉。 关于痛经这个事情,一直觉得老天爷...

  • 一次真实的经历

    今天是2018年5月22日,而今天呢也是一个不平凡的日子。为什么这样说呢,因为今天我要当小老师了!惊喜吗?惊...

  • 一次真实的经历

    那是在2012年,那年天津开始有霾,当时人们还不知道那是霾,只认为是肮脏的雾。后来才叫雾霾。那晚是天津下的第一场雾...

  • 面试官眼里的我们,是个什么样子呢?

    真实记录了一段面试经历,对话如下: ——说说你的校园经历吧? ——我参加过一次比赛,可是不太记得名字了,好像是一个...

  • 《女书密码》四羽德

    女书文化,记录着诸多女性的生活、经历,更淋漓尽致的释读女性的种种。真实的记录着,各个时期的女性的生活经历,记录着女...

网友评论

      本文标题:记录一次真实迁移经历

      本文链接:https://www.haomeiwen.com/subject/qzejdhtx.html