搭建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
 

深圳逆时针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值