搭建kubernetes集羣,並測試集羣

kubernetes集羣規劃
------------------------------------------------------------------------------

HOSTNAME zhaixl2
mac 00:50:56:2b:fb:ac 
ip 192.168.72.12

HOSTNAME zhaixl1
mac 00:0c:29:b6:25:ff
ip 192.168.72.11

HOSTNAME dockerhub
mac 00:50:56:3A:7B:F7
ip 192.168.72.50


HOSTNAME kubernetes51
mac 00:50:56:2C:15:6E
ip 192.168.72.51

HOSTNAME kubernetes52
mac 00:50:56:38:31:6A
ip 192.168.72.52

HOSTNAME kubernetes53
mac 00:50:56:3B:34:BA
ip 192.168.72.53

-----------------------------------
kubernetes 集羣安裝 -- 見《kubernetes.doc》

kubernetes master
mkdir -p /kubermange/replication && mkdir -p /kubermange/service
cd /kubermange/replication 
創建一個replication,本例直接在replication模板中創建pod並複製,也可獨立創建pod再通過replication來複制。
vi messagecenter-rc.yaml 

apiVersion: v1 
kind: ReplicationController 
metadata: 
  name: messagecenter-controller 
spec: 
  replicas: 2 
  selector: 
    name: messagecenter_pod 
  template: 
    metadata: 
      labels: 
        name: messagecenter_pod 
    spec: 
      containers: 
        - name: messagecenter 
          image: reg.dockerhub.upenny.cn/zhaixl/new_msg_center 
          ports: 
            - containerPort: 8081

執行創建命令

#kubectl -s http://192.168.72.51:8080 create -f messagecenter-rc.yaml

觀察生成的pod副本清單:

[root@k8s51 pods]# kubectl get pod
NAME                             READY     STATUS    RESTARTS   AGE
messagecenter-controller-cdj19   1/1       Running   0          38s
messagecenter-controller-vx3hj   1/1       Running   0          38s

[root@k8s51 pods]# kubectl -s http://192.168.72.51:8080 describe pod messagecenter-controller-cdj19
Name: messagecenter-controller-cdj19
Namespace: default
Node: 192.168.72.53/192.168.72.53
Start Time: Fri, 29 Dec 2017 09:32:05 +0800
Labels: name=messagecenter_pod
Status: Running
IP: 172.17.0.2
Controllers: ReplicationController/messagecenter-controller
Containers:
  messagecenter:
    Container ID: docker://4b8a63b21d01c86e87b4608f9fc17404ffc46d74e1deef21f34441ddb8772272
    Image: reg.dockerhub.upenny.cn/zhaixl/new_msg_center
    Image ID: docker-pullable://reg.dockerhub.upenny.cn/zhaixl/new_msg_center@sha256:6404a973214d4860b9936b7f5bc0c0736fb56ce8b94dc2ab290919f8a8651936
    Port: 8081/TCP
    State: Running
      Started: Fri, 29 Dec 2017 09:32:36 +0800
    Ready: True
    Restart Count: 0
    Volume Mounts: <none>
    Environment Variables: <none>
Conditions:
  Type Status
  Initialized True 
  Ready True 
  PodScheduled True 
No volumes.
QoS Class: BestEffort
Tolerations: <none>
Events:
  FirstSeen LastSeen Count From SubObjectPath Type Reason Message
  --------- -------- ----- ---- ------------- -------- ------ -------
  1m 1m 1 {default-scheduler } Normal Scheduled Successfully assigned messagecenter-controller-cdj19 to 192.168.72.53
  46s 46s 1 {kubelet 192.168.72.53} spec.containers{messagecenter} Normal Pulling pulling image "reg.dockerhub.upenny.cn/zhaixl/new_msg_center"
  52s 45s 2 {kubelet 192.168.72.53} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
  45s 45s 1 {kubelet 192.168.72.53} spec.containers{messagecenter} Normal Pulled Successfully pulled image "reg.dockerhub.upenny.cn/zhaixl/new_msg_center"
  43s 43s 1 {kubelet 192.168.72.53} spec.containers{messagecenter} Normal Created Created container with docker id 4b8a63b21d01; Security:[seccomp=unconfined]
  43s 43s 1 {kubelet 192.168.72.53} spec.containers{messagecenter} Normal Started Started container with docker id 4b8a63b21d01


創建一個service,通過selector指定 "name": "messagecenter_pod"與pods關聯。
內部可訪問的nginx service
Service的type有ClusterIP和NodePort之分,缺省是ClusterIP,這種類型的Service只能在集羣內部訪問。下表是本文用的配置文件:

# vi messagecenter-service-clusterip.yaml 
apiVersion: v1 
kind: Service 
metadata: 
  name: messagecenter-service-clusterip 
spec: 
  ports: 
    - port: 8001 
      targetPort: 8081
      protocol: TCP 
  selector: 
    name: messagecenter_pod 
執行下面的命令創建service:
# kubectl -s http://192.168.72.51:8080 create -f ./messagecenter-service-clusterip.yaml  
services/messagecenter-service 
[root@k8s51 pods]# kubectl get service
NAME                              CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes                        10.254.0.1      <none>        443/TCP    21h
messagecenter-service-clusterip   10.254.143.46   <none>        8001/TCP   16h
[root@k8s51 pods]# kubectl -s http://192.168.72.51:8080 describe service messagecenter-service-clusterip
Name: messagecenter-service-clusterip
Namespace: default
Labels: <none>
Selector: name=messagecenter_pod
Type: ClusterIP
IP: 10.254.143.46
Port: <unset> 8001/TCP
Endpoints: 172.17.0.2:8081,172.17.0.2:8081
Session Affinity: None
No events.
上面的輸出告訴我們這個Service的Cluster IP是10.254.143.46,端口是8001。下面我們驗證這個PortalNet IP的工作情況:
[root@k8s52 ~]# curl http://10.254.143.46:8001/messagecenter/api/1.0.0/message/getMessage
{"status":"1","error":"E00000000","msg":"成功(沒有異常)","data":{"count":0,"message":[]},"pageCount":null,"pageSize":null,"recordsTotal":null}


[root@k8s52 ~]# curl http://172.17.0.2:8081/messagecenter/api/1.0.0/message/getMessage
{"status":"1","error":"E00000000","msg":"成功(沒有異常)","data":{"count":0,"message":[]},"pageCount":null,"pageSize":null,"recordsTotal":null}

外部可訪問的nginx service
下面我們創建NodePort類型的Service,這種類型的Service在集羣外部是可以訪問。下表是本文用的配置文件:
$ cat messagecenter-service-nodeport.yaml 
apiVersion: v1
kind: Service
metadata:
  name: messagecenter-service-nodeport
spec:
  ports:
    - port: 8000
      targetPort: 8081
      protocol: TCP
  type: NodePort
  selector:
    name: messagecenter_pod
執行下面的命令創建service:
$ kubectl -s http://192.168.72.51:8080 create -f ./messagecenter-service-nodeport.yaml  
service "messagecenter-service-nodeport" created
[root@k8s51 pods]# kubectl -s http://192.168.72.51:8080 get service
NAME                              CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes                        10.254.0.1      <none>        443/TCP          22h
messagecenter-service-clusterip   10.254.143.46   <none>        8001/TCP         17h
messagecenter-service-nodeport    10.254.38.28    <nodes>       8000:32430/TCP   20s
使用下面的命令獲得這個service的節點級別的端口:
[root@k8s51 pods]# kubectl -s http://192.168.72.51:8080 describe service messagecenter-service-nodeport
Name: messagecenter-service-nodeport
Namespace: default
Labels: <none>
Selector: name=messagecenter_pod
Type: NodePort
IP: 10.254.38.28
Port: <unset> 8000/TCP
NodePort: <unset> 32430/TCP
Endpoints: 172.17.0.2:8081,172.17.0.2:8081
Session Affinity: None
No events.
驗證service的可訪問性:
上面的輸出告訴我們這個Service的節點級別端口是 32430 。下面我們驗證這個Service的工作情況:
[root@k8s52 ~]# curl http://192.168.72.52:32430/messagecenter/api/1.0.0/message/getMessage
{"status":"1","error":"E00000000","msg":"成功(沒有異常)","data":{"count":0,"message":[]},"pageCount":null,"pageSize":null,"recordsTotal":null}
[root@k8s53 ~]# curl http://192.168.72.53:32430/messagecenter/api/1.0.0/message/getMessage
{"status":"1","error":"E00000000","msg":"成功(沒有異常)","data":{"count":0,"message":[]},"pageCount":null,"pageSize":null,"recordsTotal":null}

-------------------------------------------------------------------
Create a mysql.yaml file:

$ mkdir pods
$ cd pods
$ vi messagecenter.yaml
And add the following lines:

apiVersion: v1
kind: Pod
metadata:
  name: messagecenter-pod
  labels:
    name: messagecenter_pod
spec:
  containers:
    - resources:
        limits:
          cpu: 100
      image: reg.dockerhub.upenny.cn/zhaixl/new_msg_center
      name: messagecenter
      
      ports:
        - containerPort: 8081
          name: messagecenter
                    
Create the pod:
$ kubectl  -s http://192.168.72.51:8080  create -f messagecenter.yaml

-------------------------------------------------------------
參考技術資料
http://dockone.io/article/2113
http://dockone.io/article/2489

https://www.csdn.net/article/2014-12-24/2823292-Docker-Kubernetes

----
https://www.cnblogs.com/xhyan/p/6655731.html
http://www.cstor.cn/textdetail_8177.html

docker集羣管理工具kubernetes初步搭建
http://blog.csdn.net/jay763836801/article/details/52648280

*****
installing-kubernetes-cluster-minions-centos7-manage-pods-services.pdf
https://severalnines.com/blog/installing-kubernetes-cluster-minions-centos7-manage-pods-services
*****
基於Kubernetes構建Docker集羣管理詳解-CSDN
https://www.csdn.net/article/2014-12-24/2823292-Docker-Kubernetes

可外部訪問的Kubernetes容器
https://www.58jb.com/html/132.html

Ingress -- host
https://kubernetes.io/docs/concepts/services-networking/ingress/

kubernetes的service的網絡類型ingress的搭建(二)
http://blog.csdn.net/u013812710/article/details/72731406

www.dockone.io/article/932    *****
http://blog.csdn.net/jincm13/article/details/50886029,不錯

https://www.jianshu.com/p/bbb673e79c3e

http://m.csdn.net/article/2015-06-11/2824933
 

深圳逆時針

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章