一、环境搭建
本地环境为mac。
1. 安装docker for mac
本次安装的版本如下:
2. 开启k8s
开启了之后会发现k8s一直在starting。主要是网络原因,需要下载很多镜像,比如k8s master的k8s api server,k8s controller,k8s scheduler;k8s node的kubelet, kube-proxy。
解决方案
详见Docker Desktop for Mac/Windows 开启 Kubernetes。
操作步骤:
- git clone github.com/AliyunConta…
- 查看所有分枝:git branch -a
- 切换分枝:git checkout -b v1.19.7 origin/v1.19.7
此处的分枝需要跟docker for mac中k8s的版本一致- 执行镜像拉取脚本:sh load_images.sh
此处不可以将docker for mac退出- 执行完上面的操作应该可以了,如果不可以执行下面的操作
- rm -fr '~/Library/Group\ Containers/group.com.docker/pki'
二、demo
1. mysql-rc
-
创建mysql-rc.yaml,内容如下:
mysql的镜像如果不声明5.7版本,默认会拉取最新的版本,web应用会有数据库连接失败的问题。apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 # 如果不声明版本,默认会拉取最新的版本,web应用会有数据库连接失败的问题 ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "123456" -
创建mysql容器
-
kubectl create -f mysql-rc.yaml -
kubectl get rc// 这一步会很慢,第一次需要拉取mysql镜像。我这边耗时3分钟左右(长城宽带😂)。 -
kubectl get pods
-
2. mysql-svc
-
创建mysql-svc.yaml文件,内容如下:
apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql -
创建mysql-svc
-
kubectl create -f mysql-svc.yaml -
kubectl get svc
-
3. myweb-rc
-
创建myweb-rc.yaml,内容如下:
apiVersion: v1 kind: ReplicationController metadata: name: myweb spec: replicas: 2 selector: app: myweb template: metadata: labels: app: myweb spec: containers: - name: myweb image: kubeguide/tomcat-app:v1 ports: - containerPort: 8080 env: - name: MYSQL_SERVICE_HOST value: 'mysql' # 这里使用的是mysql的service名字 - name: MYSQL_SERVICE_PORT # 这里加入了port配置 value: '3306' -
创建myweb容器
-
kubectl create -f myweb-rc.yaml -
kubectl get rc -
kubectl get pods
-
4. 创建myweb-svc
-
创建myweb-svc.yaml,内容如下:
apiVersion: v1 kind: Service metadata: name: myweb spec: type: NodePort ports: - port: 8080 nodePort: 30001 selector: app: myweb -
创建myweb svc
-
kubectl create -f myweb-svc.yaml -
kubectl get svc
-
三、见证奇迹
在浏览器中输入http://[本地mac的ip地址]:30001/demo/。
硬广告
欢迎关注公众号:double6