Skip to content

Instantly share code, notes, and snippets.

@rayhassan
Last active June 7, 2018 09:48
Show Gist options
  • Save rayhassan/bdf75051f5822d8e745308727c9a6886 to your computer and use it in GitHub Desktop.
Save rayhassan/bdf75051f5822d8e745308727c9a6886 to your computer and use it in GitHub Desktop.
o get k8s cluster status
# kubectl --kubeconfig ./kubeconfig cluster-info
Kubernetes master is running at https://10.68.68.108:443
Elasticsearch is running at https://10.68.68.108:443/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy
Kibana is running at https://10.68.68.108:443/api/v1/namespaces/kube-system/services/kibana-logging/proxy
KubeDNS is running at https://10.68.68.108:443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
# kubectl --kubeconfig ./kubeconfig get services --namespace kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch-logging ClusterIP 10.32.0.183 <none> 9200/TCP 12h
kibana-logging NodePort 10.32.0.221 <none> 5601:31412/TCP 12h
kube-dns ClusterIP 10.32.0.10 <none> 53/UDP,53/TCP 12h
SOCK SHOP DEMO
o deploy sock-shop
kubectl --kubeconfig ./kubeconfig create namespace sock-shop
kubectl --kubeconfig ./kubeconfig apply -f /root/microservices-demo/deploy/kubernetes/complete-demo.yaml
kubectl --kubeconfig ./kubeconfig get svc front-end -n sock-shop -o wide
o delete sockshop
kubectl --kubeconfig ./kubeconfig delete -f /root/microservices-demo/deploy/kubernetes/complete-demo.yaml
o get deployment status
kubectl --kubeconfig ./kubeconfig get svc -n sock-shop
o expose via nodeport
kubectl --kubeconfig ./kubeconfig expose deployment front-end --name=nodeport --port=80 --target-port=30001 --type=NodePort -n sock-shop
then get master ip and use port from : kubectl --kubeconfig ./kubeconfig get svc front-end -n sock-shop -o wide
http://10.68.68.108:30001/
PVC DEMO
o create PVCs
kubectl --kubeconfig ./kubeconfig create -f wp-pvcs.yaml
persistentvolumeclaim "mysql-pv-claim" created
persistentvolumeclaim "wp-pv-claim" created
kubectl --kubeconfig ./kubeconfig get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-pv-claim Bound pvc-20012951-6a32-11e8-a843-506b8d18ab34 20Gi RWO acs-test 5m
wp-pv-claim Bound pvc-200262a5-6a32-11e8-a843-506b8d18ab34 20Gi RWO acs-test 5m
o setup mysql and WP
create secret
kubectl --kubeconfig ./kubeconfig create secret generic mysql-pass --from-literal=password=nutanix/4u
kubectl --kubeconfig ./kubeconfig get secrets
NAME TYPE DATA AGE
default-token-xrcmm kubernetes.io/service-account-token 3 13h
mysql-pass Opaque 1 3m
kubectl --kubeconfig ./kubeconfig create -f wp-mysql.yaml
service "wordpress-mysql" created
deployment "wordpress-mysql" created
kubectl --kubeconfig ./kubeconfig create -f wp-web.yaml
service "wordpress" created
deployment "wordpress" created
kubectl --kubeconfig ./kubeconfig get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 13h
wordpress NodePort 10.32.0.64 <none> 80:30000/TCP 3m
wordpress-mysql ClusterIP None <none> 3306/TCP 3m
[root@cos7-dbhost01 ~]# kubectl --kubeconfig ./kubeconfig get pods
NAME READY STATUS RESTARTS AGE
wordpress-77d578745-fh45t 1/1 Running 0 3m
wordpress-mysql-58cf8dc9f9-vqq9s 1/1 Running 0 3m
o nodeport redirect
kubectl --kubeconfig ./kubeconfig expose deployment wordpress --name=nodeport --port=80 --target-port=30000 --type=NodePort
service "nodeport" exposed
its running on worker2
kubectl --kubeconfig ./kubeconfig get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
wordpress-77d578745-fh45t 1/1 Running 0 8m 10.200.3.26 k8stest-cb1fbb-k8s-worker-2
wordpress-mysql-58cf8dc9f9-vqq9s 1/1 Running 0 8m 10.200.1.10 k8stest-cb1fbb-k8s-worker-0
http://<worker 2 ip >:30000
o delete everything ...
kubectl --kubeconfig ./kubeconfig delete secret mysql-pass
secret "mysql-pass" deleted
kubectl --kubeconfig ./kubeconfig delete pvc -l app=wordpress
persistentvolumeclaim "mysql-pv-claim" deleted
persistentvolumeclaim "wp-pv-claim" deleted
kubectl --kubeconfig ./kubeconfig delete service -l app=wordpress
service "nodeport" deleted
service "wordpress" deleted
service "wordpress-mysql" deleted
kubectl --kubeconfig ./kubeconfig delete deployment -l app=wordpress
deployment "wordpress" deleted
deployment "wordpress-mysql" deleted
apiVersion: v1
kind: Secret
metadata:
name: mysql-pass
data:
password: TG9uZG9uMSE=
---
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
labels:
app: wordpress
spec:
ports:
- port: 3306
selector:
app: wordpress
tier: mysql
clusterIP: None
---
apiVersion: extensions/v1beta1 # for versions before 1.9.0 use apps/v1beta2
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
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
labels:
app: wordpress
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: acs-test
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wp-pv-claim
labels:
app: wordpress
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: acs-test
apiVersion: v1
kind: Service
metadata:
name: wordpress
labels:
app: wordpress
spec:
ports:
- port: 80
nodePort: 30000
selector:
app: wordpress
tier: frontend
type: NodePort
---
apiVersion: extensions/v1beta1 # for versions before 1.9.0 use apps/v1beta2
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: wordpress-mysql
- 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
apiVersion: v1
kind: Secret
metadata:
name: mysql-pass
data:
password: TG9uZG9uMSE=
---
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
labels:
app: wordpress
spec:
ports:
- port: 3306
selector:
app: wordpress
tier: mysql
clusterIP: None
---
apiVersion: extensions/v1beta1 # for versions before 1.9.0 use apps/v1beta2
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment