Kubernetes安装配置与服务部署

1. 系统环境

操作系统:
CentOS 7
KV存储系统,用于集群的共享配置和服务发现(类似ZooKeeper):
etcd 3.1.0
容器管理工具:
Kubernetes 1.5.2
应用容器引擎
Docker 1.12.6
网络规划工具,统一分配集群Docker容器的虚拟IP,并实现服务之间通信:
Flannel 0.7.0

服务器 服务
master apiserver, controller-manager, scheduler
node flannel, docker, kubelet, kube-proxy
etcd etcd

2. 基本环境配置

  • 设置hosts
    192.168.89.133 master
    192.168.89.133 etcd
    192.168.89.134 node1
    PS:由于在虚拟机上面部署,所以只启动两台服务器,并且etcd和master运行在同一个物理机器上
  • 关闭防火墙
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    PS:第一个命令关闭防火墙,第二个命令使开机不启动防火墙(永久关闭)
  • 永久关闭SELinux
    修改/etc/selinux/config
    SELINUX=disabled
  • 重启机器
    reboot

3. 安装和配置etcd

3.1 安装etcd

yum install etcd -y

3.2 配置etcd

修改/etc/etcd/etcd.conf中的部分属性
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379"
PS:其中etcd表示etcd服务器主机名

3.3 运行etcd

systemctl start etcd
systemctl enable etcd

3.4 配置etcd内网信息

etcdctl -C 192.168.89.133:2379 set /atomic.io/network/config '{"Network":"172.17.0.0/16"}'
PS:其中网络号172.17.0.0/16与docker中的docker0网络一致(若不一致,可修改docker0网络或者配置上述etcd网络);atomic.io与下面的Flannel配置中的FLANNEL_ETCD_PREFIX对应

4.master服务器上安装服务

4.1 安装kubernetes-master

yum install kubernetes-master

4.2 配置apiserver

修改/etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
PS:测试时需要把KUBE_ADMISSION_CONTROL中的SecurityContextDenyServiceAccount去掉,这是权限相关的

4.3 配置全局配置文件

修改/etc/kubernetes/config
KUBE_MASTER="--master=http://master:8080"

4.4 设置开机启动并启动master服务

systemctl enable kube-apiserver kube-scheduler kube-controller-manager
systemctl start kube-apiserver kube-scheduler kube-controller-manager

4.5 测试master服务

访问http://master:8080会返回json描述信息,如下图:
Kubernetes安装配置与服务部署_第1张图片

5.node1工作节点上安装服务

5.1 安装docker

yum install docker

5.2 安装flannel

yum install flannel

5.3 配置flannel

修改/etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
PS:其中atomic.io与上面etcd中的Network对应

5.4 安装kubernetes-node

yum install kubernetes-node

5.5 配置全局配置文件

修改/etc/kubernetes/config
KUBE_MASTER="--master=http://master:8080"

5.6 配置kubelet组件

修改/etc/kubernetes/kubelet
KUBELET_HOSTNAME="--hostname-override=node1"
KUBELET_API_SERVER="--api-servers=http://master:8080"

5.7 配置开机启动并启动服务

systemctl enable kubelet kube-proxy
systemctl start kubelet kube-proxy

6.测试集群是否工作

在master节点运行
kubectl get nodes
若正常工作,可获取工作节点信息及运行状态为Ready,如下图:
master节点获取工作节点信息

7.发布nginx服务

7.1 创建pod : nginx-pod.yaml

kubectl create -f nginx-pod.yaml

apiVersion: v1
kind: Pod
metadata:
 name: nginx-pod
 labels:
  name: nginx-pod
spec:
 containers:
 - name: nginx
   image: nginx
   ports:
   - containerPort: 80

7.2 查看pod的状态

kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-pod 0/1 ContainerCreating 0 6s
等10分钟再试
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 13m
PS:这里经常会因为网络问题失败,可以先使用docker手动pull镜像后再使用kubectl来create pod,如果还是不行,就delete pod之后再create pod,实在不行,可以重启机器试试,还是不行,那就是配置出问题了

7.3 创建replicationController : nginx-rc.yaml

kubectl create -f nginx-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
 name: nginx-rc
spec:
 replicas: 1
 selector:
  name: nginx-pod
 template:
  metadata:
   labels:
    name: nginx-pod
  spec:
   containers:
   - name: nginx-pod
     image: nginx
     ports:
     - containerPort: 80

7.4 查看ReplicationController状况

rc状态

7.5 创建service : nginx-service.yaml

kubectl create -f nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
 name: nginx-service
spec:
 type: NodePort
 ports:
 - port: 80
   nodePort: 30001
 selector:
  name: nginx-pod

7.6 查看service状态

service状态
PS:其中Kubernetes服务为Kube系统自带服务,无需理会

7.7 测试发布的nginx服务

使用其他机器的浏览器访问node1机器的30001端口
Kubernetes安装配置与服务部署_第2张图片

8. 相关文章

Kubernetes 1.5部署安装dashboard
Kubernetes中的nodePort,targetPort,port的区别和意义

9. 参考

西楼:https://my.oschina.net/zhougui/blog/824165
督门提酒的博客:
http://blog.csdn.net/u010884123/article/details/56485246?locationNum=10&fps=1

10. yaml源码

https://github.com/HeYongbiao/kube_nginx

11. 学习资料

kubernetes指南:http://pan.baidu.com/s/1gfKHDAF 密码:who6

你可能感兴趣的:(分布式,云计算)