说在前面
云原生应用也就是面向“云”而设计的应用,在使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署、按需伸缩、不停机交付等。
今天我们通过把wordpress 和Mysql部署到IBM公有云的托管K8S上,来实践如何部署一个应用到k8s的环境,从而为我们后面的云原生开发打下实践的基础。
单实例 wordpress
本实验基于k8s 示例:使用 Persistent Volumes 部署 WordPress 和 MySQL 与 IBM IKS官方文档.
本实验与k8s官方教程的主要有以下区别:
- 本实验iaas层基于
ibm cloud vpc gen2
,k8s官方教程基于本地的minikube
。 - 本实验持久化基于
IBM vpc block storage
, 而k8s官网用的是本地storage作为持久化。
相同点:
- 本实验同样使用 dynamic PVC 自动创建相对应的PV。
1. 准备工作
- 由于本实验的iaas层基于ibm vpc gen2, 所以需要先创建对应的vpc实例, 可以使用ibm cloud gui console 快速创建vpc。
- Push image 到 IBM Registry
使用以下命令
ibmcloud cr login # 登录 IBM Registry。
ibmcloud cr namespace-add spark_test # 添加一个namespace
ibmcloud cr namespace-list -v # list namespace
docker pull wordpress:4.8-apache # 从dockerhub下载image 到本地
docker pull mysql:5.6
docker tag wordpress:4.8-apache us.icr.io/spark_test/wordpress:4.8-apache # tag imag
docker tag mysql:5.6 us.icr.io/spark_test/mysql:5.6
docker push wordpress:4.8-apache us.icr.io/spark_test/wordpress:4.8-apache # 推送image到仓库对应的namespace下
docker push mysql:5.6 us.icr.io/spark_test/mysql:5.6
远端仓库的格式为 {zone}.us.icr.io,当登录Registry 会提示远端仓库的信息,这里只有做相应的替换就可以了。
查看image是否上传成功
localhost:IKS spark$ ibmcloud cr image-list
Listing images...
Repository Tag Digest Namespace Created Size Security status
us.icr.io/spark_test/busybox 1.28.4 74f634b1bc1b spark_test 2 years ago 723 kB Unsupported OS
us.icr.io/spark_test/mysql 5.6 574b626bb891 spark_test 1 week ago 103 MB 4 Issues
us.icr.io/spark_test/wordpress 4.8-apache b40c224a95cd spark_test 3 years ago 170 MB 366 Issues
- 登录 ibm cloud
ibmcloud login -a cloud.ibm.com -r us-south -g friday-you --apikey xxxxx
2. 创建 IKS cluster
- 使用IBM console 创建 cluster
cluster 创建好后,进入cluster overview页面获取 access 信息。 - 设置cluster 环境
localhost:IKS spark$ ibmcloud ks cluster config --cluster bvn8bkad0kms4uq0eij0
localhost:IKS spark$ kubectl config current-context
spark-iks-us-south-1-bx2.4x16/bvn8bkad0kms4uq0eij0
- 查看cluster nodes,确认环境已经可用
localhost:IKS spark$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
10.240.0.4 Ready <none> 6h43m v1.18.13+IKS
3. 创建Secret
https://kubernetes.io/zh/docs/concepts/configuration/secret/