From fbc2861f9e122e72676efabe7faec39174d5855c Mon Sep 17 00:00:00 2001 From: Peng Xiao Date: Sat, 17 Mar 2018 23:05:20 +0800 Subject: [PATCH] chapter9 Signed-off-by: Peng Xiao --- chapter9/labs/kops/README.md | 26 +++++-- chapter9/labs/kops/Vagrantfile | 2 +- chapter9/labs/kops/setup.sh | 7 +- chapter9/labs/wordpress/mysql-deployment.yaml | 65 ++++++++++++++++++ .../labs/wordpress/wordpress-deployment.yaml | 67 +++++++++++++++++++ 5 files changed, 160 insertions(+), 7 deletions(-) create mode 100644 chapter9/labs/wordpress/mysql-deployment.yaml create mode 100644 chapter9/labs/wordpress/wordpress-deployment.yaml diff --git a/chapter9/labs/kops/README.md b/chapter9/labs/kops/README.md index 01b0bc8..b2dacc1 100644 --- a/chapter9/labs/kops/README.md +++ b/chapter9/labs/kops/README.md @@ -4,13 +4,10 @@ ## 准备工作 -### 1. 相关软件的安装 +### 1. 虚拟机的创建 因为kops只支持在MAC和Linux上使用,所以本课程采用Linux,通过Vagrant创建的CentOS 7 Linux, 这样就能保证不管大家是Windows还是MAC,都有一个统一的实验环境。 - -#### 1.1 虚拟机的创建 - 使用本文件夹里的vagrantfile进行虚机的创建。然后SSH到虚机里。 ``` @@ -28,7 +25,7 @@ simply run `vagrant up`. [vagrant@kops-host ~]$ ``` -这个虚拟机帮我们安装好了两个工具,一个kops,一个aws命令行 +这个虚拟机帮我们安装好了三个工具,一个kops,一个aws命令行,一个kubectl ``` [vagrant@kops-host ~]$ kops version @@ -38,5 +35,24 @@ aws-cli/1.14.56 Python/2.7.5 Linux/3.10.0-693.11.6.el7.x86_64 botocore/1.9.9 [vagrant@kops-host ~]$ ``` +### 2. AWS 的准备工作 + +http://aws.amazon.com 创建账号(需要绑定信用卡)。 + + + +### 3. kops start + + +SSH key + +``` +ssh-keygen -f .ssh/id_rsa +``` + +``` +kops create cluster --name=k8s.imooc.link --state=s3://kops.k8s.imooc.link --zones=us-west-1a --node-count=2 --node-size=t2.medium --master-size=t2.medium --dns-zone=k8s.imooc.link +``` + diff --git a/chapter9/labs/kops/Vagrantfile b/chapter9/labs/kops/Vagrantfile index fb12a98..cb6ef9e 100644 --- a/chapter9/labs/kops/Vagrantfile +++ b/chapter9/labs/kops/Vagrantfile @@ -7,5 +7,5 @@ Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.define 'kops-host' config.vm.hostname = 'kops-host' - + config.vm.provision "shell", privileged: true, path: "./setup.sh" end diff --git a/chapter9/labs/kops/setup.sh b/chapter9/labs/kops/setup.sh index 690b015..140ede9 100644 --- a/chapter9/labs/kops/setup.sh +++ b/chapter9/labs/kops/setup.sh @@ -1,7 +1,7 @@ #/bin/sh # install some tools -sudo yum install -y git vim gcc glibc-static telnet +sudo yum install -y vim telnet bind-utils wget # install kops @@ -10,6 +10,11 @@ mv kops-linux-amd64 kops sudo mv kops /usr/local/bin/ sudo chmod +x /usr/local/bin/kops +# install kubectl +curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl +chmod +x ./kubectl +sudo mv ./kubectl /usr/local/bin/kubectl + # install python pip wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py diff --git a/chapter9/labs/wordpress/mysql-deployment.yaml b/chapter9/labs/wordpress/mysql-deployment.yaml new file mode 100644 index 0000000..c48181e --- /dev/null +++ b/chapter9/labs/wordpress/mysql-deployment.yaml @@ -0,0 +1,65 @@ +apiVersion: v1 +kind: Service +metadata: + name: mysql-service + labels: + app: wordpress +spec: + ports: + - port: 3306 + selector: + app: wordpress + tier: mysql + clusterIP: None +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mysql-pv-claim + labels: + app: wordpress +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi +--- +apiVersion: apps/v1beta2 # # for versions after 1.9.0 use apps/v1 +kind: Deployment +metadata: + name: wordpress-mysql + labels: + app: wordpress +spec: + selector: + matchLabels: + app: wordpress + tier: mysql + strategy: + type: Recreate + template: + metadata: + labels: + app: wordpress + tier: mysql + spec: + containers: + - image: mysql:5.6 + name: mysql + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-pass + key: password + ports: + - containerPort: 3306 + name: mysql + volumeMounts: + - name: mysql-persistent-storage + mountPath: /var/lib/mysql + volumes: + - name: mysql-persistent-storage + persistentVolumeClaim: + claimName: mysql-pv-claim diff --git a/chapter9/labs/wordpress/wordpress-deployment.yaml b/chapter9/labs/wordpress/wordpress-deployment.yaml new file mode 100644 index 0000000..bc94ba6 --- /dev/null +++ b/chapter9/labs/wordpress/wordpress-deployment.yaml @@ -0,0 +1,67 @@ +apiVersion: v1 +kind: Service +metadata: + name: wordpress-service + labels: + app: wordpress +spec: + ports: + - port: 80 + selector: + app: wordpress + tier: frontend + type: LoadBalancer +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: wp-pv-claim + labels: + app: wordpress +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi +--- +apiVersion: apps/v1beta2 # # for versions after 1.9.0 use apps/v1 +kind: Deployment +metadata: + name: wordpress + labels: + app: wordpress +spec: + selector: + matchLabels: + app: wordpress + tier: frontend + strategy: + type: Recreate + template: + metadata: + labels: + app: wordpress + tier: frontend + spec: + containers: + - image: wordpress:4.8-apache + name: wordpress + env: + - name: WORDPRESS_DB_HOST + value: mysql-service + - name: WORDPRESS_DB_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-pass + key: password + ports: + - containerPort: 80 + name: wordpress + volumeMounts: + - name: wordpress-persistent-storage + mountPath: /var/www/html + volumes: + - name: wordpress-persistent-storage + persistentVolumeClaim: + claimName: wp-pv-claim