vi virt7-docker-common-release.repo
[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0
yum install -y etcd kubernetes (docker版本衝突請先卸載)
Dependencies Resolved
================================================================================================
Package Arch Version Repository Size
================================================================================================
Installing:
kubernetes x86_64 1.2.0-0.9.alpha1.gitb57e8bd.el7 extras 34 k
Installing for dependencies:
docker x86_64 1.9.1-25.el7.centos extras 13 M
docker-forward-journald x86_64 1.9.1-25.el7.centos extras 824 k
docker-selinux x86_64 1.9.1-25.el7.centos extras 70 k
kubernetes-client x86_64 1.2.0-0.9.alpha1.gitb57e8bd.el7 extras 9.3 M
kubernetes-master x86_64 1.2.0-0.9.alpha1.gitb57e8bd.el7 extras 15 M
kubernetes-node x86_64 1.2.0-0.9.alpha1.gitb57e8bd.el7 extras 9.3 M
socat x86_64 1.7.2.2-5.el7 base 255 k
Transaction Summary
================================================================================================
Install 1 Package (+7 Dependent packages)
Installed:
kubernetes.x86_64 0:1.2.0-0.9.alpha1.gitb57e8bd.el7
Dependency Installed:
docker.x86_64 0:1.9.1-25.el7.centos
docker-forward-journald.x86_64 0:1.9.1-25.el7.centos
docker-selinux.x86_64 0:1.9.1-25.el7.centos
kubernetes-client.x86_64 0:1.2.0-0.9.alpha1.gitb57e8bd.el7
kubernetes-master.x86_64 0:1.2.0-0.9.alpha1.gitb57e8bd.el7
kubernetes-node.x86_64 0:1.2.0-0.9.alpha1.gitb57e8bd.el7
socat.x86_64 0:1.7.2.2-5.el7
Complete!
2.3 修改配置
vim /etc/sysconfig/docker
修改成OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'
vim /etc/kubernetes/apiserver
刪除ServiceAccount KUBE_ADMISSION_CONTROL="--admission
-control=NamespaceLifecycle,NamespaceExists,LimitRanger,
ServiceAccount,SecurityContextDeny,ResourceQuota"
2.4 啓動服務
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
3.Guestbook部署linux
•redis-master: 用於前端Web應用進行「寫」留言的操做,其中已經保存了一條內容爲「Hello World!」的留言。
•guestbook-redis-slave: 用於前端Web應用進行「讀」留言的操做,並與redis-master的數據保持同步。
•guestbook-php-frontend: PHP Web服務,在網頁上展現留言內容,也提供一個文本輸入框供訪客添加留言。
3.1 下載鏡像
#docker pull kubeguide/redis-master
#docker pull kubeguide/guestbook-redis-slave
#docker pull kubeguide/guestbook-php-frontend
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/kubeguide/guestbook-php-frontend latest 38658844a359 7 months ago 509.6 MB
docker.io/kubeguide/redis-master latest 423e126c2ad4 8 months ago 419.1 MB
docker.io/kubeguide/guestbook-redis-slave latest 00206e07dd92 8 months ago 109.5 MB
3.2 設置工做目錄
#mkdir kube-guestbook
#cd kube-guestbook
3.3 建立redis-master Pod和服務
#vi redis-master-controller.yaml
apiVersion: v1
kind: ReplicationController
- containerPort: 6379
建立redis-master Pod
#kubectl create -f redis-master-controller.yaml
#kubectl get pods
一開始pod在pending狀態
[root@CentOS7 kube-guestbook]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-7i338 0/1 ContainerCreating 0 47s
第一次啓動容器時間比較久,若是沒什麼問題,狀態會更新爲Running
[root@CentOS7 kube-guestbook]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-7i338 1/1 Running 0 11m
#vi redis-master-service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master
labels:
name: redis-master
spec:
ports:
# the port that this service should serve on
- port: 6379
targetPort: 6379
selector:
name: redis-master
建立redis-master服務
#kubectl create -f redis-master-service.yaml
#kubectl get services
[root@CentOS7 kube-guestbook]# kubectl get services
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
kubernetes 10.254.0.1 <none> 443/TCP <none> 8d
redis-master 10.254.137.9 <none> 6379/TCP name=redis-master 7s
3.4 建立redis-slave Pod和服務
#vi redis-slave-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-slave
labels:
name: redis-slave
spec:
replicas: 2
selector:
name: redis-slave
template:
metadata:
labels:
name: redis-slave
spec:
containers:
- name: slave
image: docker.io/kubeguide/guestbook-redis-slave
env:
- name: GET_HOSTS_FROM
value: env
ports:
- containerPort: 6379
建立redis-slave Pod
#kubectl create -f redis-slave-controller.yaml
#kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS AGE
redis-master master docker.io/kubeguide/redis-master name=redis-master 1 26m
redis-slave slave docker.io/kubeguide/guestbook-redis-slave name=redis-slave 2 10s
# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-7i338 1/1 Running 0 27m
redis-slave-jju81 1/1 Running 0 28s
redis-slave-yzzmd 1/1 Running 0 28s
# vi redis-slave-service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-slave
labels:
name: redis-slave
spec:
ports:
- port: 6379
selector:
name: redis-slave
建立redis-slave服務
#kubectl create -f redis-slave-service.yaml
#kubectl get services
# kubectl get services
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
kubernetes 10.254.0.1 <none> 443/TCP <none> 8d
redis-master 10.254.137.9 <none> 6379/TCP name=redis-master 13m
redis-slave 10.254.181.125 <none> 6379/TCP name=redis-slave 7s
3.5 建立frontend Pod和服務
# vi frontend-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: frontend
labels:
name: frontend
spec:
replicas: 3
selector:
name: frontend
template:
metadata:
labels:
name: frontend
spec:
containers:
- name: php-redis
image: docker.io/kubeguide/guestbook-php-frontend
env:
- name: GET_HOSTS_FROM
value: env
ports:
- containerPort: 80
建立frontend Pod
#kubectl create -f frontend-controller.yaml
#kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS AGE
frontend php-redis docker.io/kubeguide/guestbook-php-frontend name=frontend 3 7s
redis-master master docker.io/kubeguide/redis-master name=redis-master 1 36m
redis-slave slave docker.io/kubeguide/guestbook-redis-slave name=redis-slave 2 9m
# kubectl get pods
NAME READY STATUS RESTARTS AGE
frontend-00drw 1/1 Running 0 2m
frontend-78d16 1/1 Running 0 2m
frontend-z2fmk 1/1 Running 0 2m
redis-master-7i338 1/1 Running 0 38m
redis-slave-jju81 1/1 Running 0 12m
redis-slave-yzzmd 1/1 Running 0 12m
# vi frontend-service.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
name: frontend
spec:
type: NodePort
ports:
- port: 80
nodePort:30001
selector:
name: frontend
建立frontend服務
#kubectl create -f frontend-service.yaml
#kubectl get services
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
frontend 10.254.131.102 nodes 80/TCP name=frontend 19s
kubernetes 10.254.0.1 <none> 443/TCP <none> 8d
redis-master 10.254.137.9 <none> 6379/TCP name=redis-master 30m
redis-slave 10.254.181.125 <none> 6379/TCP name=redis-slave 17m
訪問主機30001端口,咱們看到網頁已經默認有一條Hello World!
3.7中止Pod和服務
kubectl stop rc redis-master
kubectl stop rc redis-slave
kubectl stop rc frontend
kubectl delete service redis-master
kubectl delete service redis-slave
kubectl delete service frontend
3.8 其餘
kubectl get node 獲取節點
kubectl describe node xxx 詳細信息