Kubernetes学习笔记1-环境搭建

环境:

centos7

docker1.13.1

Kubernetes在国内简称 k8s,是谷歌开发的,是容器编排引擎(其实就是容器统一管理)

环境搭建

组件总结

etcd 控制数据,存储K/V的组件,可以理解为数据库
flannel   控制网络,实现跨主机访问容器网络通信
kube-apiserver 提供k8s集群的api调用
kube-controller-manager 集群控制服务
kube-scheduler 调度容器,分配到node
kubelet node上配置好及可添加到集群中
kube-proxy node的网络代理
registry 私有镜像仓库

 

环境需求

最少三台主机,前三个可以在同一台主机上 (我用了5台):

192.168.0.128 k8s-master #k8s 控制器,主要控制在这台机器上

192.168.0.120 docker1 #宿主机1(宿主机在k8s上叫做nede节点)

192.168.0.121 docker2 #宿主机2

192.168.0.122 etcd #etcd 数据库

192.168.0.123 registry 私有镜像仓库

环境配置

所有配置

所有机器关闭centos7的两层防火墙

#禁用firewalld 
systemctl stop firewalld && systemctl disable firewalld && setenforce 0


#禁用selinux 把 enforcing 改成disabled

vim /etc/selinux/config

SELINUX=disabled

#修改防火墙规则,最后添加
vim /etc/sysctl.conf

net.ipv4.ip_forward=1

所有机器都需要安装 epel-release源

yum install epel-release -y

rhsm安装

yum install *rhsm* -y

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem

etcd配置

1.安装etcd数据库

yum install etcd -y

2.编辑配置文件

#ETCD_LISTEN_CLIENT_URLS /监控本机
#ETCD_NAME /名字
#ETCD_ADVERTISE_CLIENT_URLS #其他宿主机访问的ip端口

vim /etc/etcd/etcd.conf


ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"



ETCD_NAME="master"


ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.122:2379,http://192.168.0.122:4001"

3.启动

systemctl enable etcd

systemctl start etcd

4.验证

#添加一条数据 testkey 是键  0 是值
etcdctl set testkey 0

#查询一条数据
etcdctl get testkey

#远程查询端口
etcdctl -C http://192.168.0.122:2379 cluster-health

etcdctl -C http://192.168.0.122:4001 cluster-health

master配置

1.安装docker(k8s自带,安装了会冲突,可以不安装。从第4步开始)

yum install docker -y

2.配置

vim /etc/sysconfig/docker

#在最下面添加
#registry私有仓库地址,如果docker设置过daocloud加速器那么这个加上就会报错,不知道为什么
OPTIONS="--insecure-registry 192.168.0.123:5000"

3.设置开机自启并启动docker

#开机启动
systemctl enable docker
#启动
systemctl start docker

4.安装kubernetes

yum install kubernetes -y

master 上需要运行 kubernetes API server , kubernetes Controller Manager , kubernetes Scheduler

5.配置 api server

#进入配置文件,需要修改4个地方
#KUBE_API_ADDRESS /服务所监控的ip
#KUBE_API_PORT /端口
#KUBE_ETDE_SERVERS /etcd数据库的集群组,多个etcd用,隔开
#KUBE_ADMISSION_CONTROL /组件 ServiceAccount 只需要把这个组件删掉即可
vim /etc/kubernetes/apiserver

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

KUBE_API_PORT="--port=8080"

KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.0.122:2379"

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,Security    ContextDeny,ResourceQuota"

6.kubernetes配置

#进入config 只需要把KUBE_MASTER 这里的http后面改成master的IP即可
vim /etc/kubernetes/config

KUBE_MASTER="--master=http://192.168.0.128:8080"

7.设置开机启动

#开机启动
systemctl enable kube-apiserver
#启动
systemctl start kube-apiserver

#开机启动
systemctl enable kube-controller-manager
#启动
systemctl start kube-controller-manager

#开机启动
systemctl enable kube-scheduler
#启动
systemctl start kube-scheduler

node配置

1.所有node都一样

#1.安装docker
#2.设置开机启动
#3.安装kubernetes

配置node的kubernetes

node上kubernetes 需要运行 Kubelet , Kubernetes Proxy

2.config配置

#需要配置
#KUBE_MASTER /master的IP地址
vim /etc/kubernetes/config

KUBE_MASTER="--master=http://192.168.0.128:8080"

3.kubelet 配置

#KUBELET_ADDRESS /后面ip改成0.0.0.0 表示监控所有ip
#KUBELET_HOSTNAME /后面改成本机的ip
#KUBELET_API_SERVER /后面是 master的IP

vim /etc/kubernetes/kubelet

KUBELET_ADDRESS="--address=0.0.0.0"

KUBELET_HOSTNAME="--hostname-override=192.168.0.120"

KUBELET_API_SERVER="--api-servers=http://192.168.0.128:8080"

4.启动服务

#开机启动
systemctl enable kubelet
#启动
systemctl start kubelet

#开机启动
systemctl enable kube-proxy
#启动
systemctl start kube-proxy

5.测试

#在master 上查看node

kubectl -s http://192.168.0.128:8080 get node

# node的状态

kubectl get nodes

6.所有节点都下载pod-infrastructure镜像

docker pull registry.access.redhat.com/rhel7/pod-infrastructure

网络覆盖--Flannel

作用:管理所有节点的网络

1.所有上面均安装flannel

yum install flannel -y

2.配置



vim /etc/sysconfig/flanneld

#定义etcd数据库的地址
FLANNEL_ETCD_ENDPOINTS="http://192.168.0.122:2379"
#设置网卡,不设置无法ping通外网 em1 是内网网卡名字
FLANNEL_OPTIONS="--iface=em1"


#启动服务 #有etcd数据库的那台宿主机需要配置完 3,4步在启动服务
systemctl start flanneld

#开机自启动
 
systemctl enable flanneld

3.master上配置 network 并保存到etcd上面(etcd单独用主机的,用安装etcd的那台主机)

etcdctl mk /atomic.io/network/config '{"Network":"192.168.0.0/24"}'

4.当网络出现异常时,使用网络刷新(etcd单独用主机的,用安装etcd的那台主机)

etcdctl update /atomic.io/network/config '{"Network":"192.168.0.0/16"}'

5.flaneld服务启动时发生错误,说明etcd数据库没配置好

flanneld.service failed because a timeout was exceeded.

6.flannel配置完毕后ping不通大网

修改flanneld文件
vim /etc/sysconfig/flanneld

FLANNEL_OPTIONS="--iface=docker0"

保存推出后执行以下命令 docker0是docker网卡的名字,看你的网卡名字是什么就写什么
#重启服务
systemctl restart flanneld docker

#用ifconfig查看以下dockerip是否变换了,如果变了则不用执行下面的,如果没变执行以下操作

#停止docker0网卡
ip link set docker0 down    

#删除docker0网卡
ip link delete docker0
#重启服务#删除后等1分钟左右再重启
systemctl restart flanneld docker

修改flanneld文件
vim /etc/sysconfig/flanneld

FLANNEL_OPTIONS="iface=docker0"

至此完成

 

registry 私有镜像仓库搭建

 

1.在master上下载镜像

docker pull registry

2.启动镜像

#-d 后台运行 ,-p映射端口 ,--name 自个起的名字 
#--privileged=true 给一个权限
#-v /home/data/registrydata:/tmp/registry 映射卷,仓库镜像会保存到这里


docker run -d -p 5000:5000 --name=registry --restart=always --privileged=true --log-driver=none -v /home/data/registrydata:/tmp/registry docker.io/registry

3.tag镜像

#192.168.0.123:5000/registry/nginx:v1 除了IP是你私有仓库的ip,其他的都随意起,最好和原镜像同名
docker tag 容器id 192.168.0.123:5000/registry/nginx:v1

4上传镜像到本地私有仓库

docker push 192.168.0.123:5000/registry/nginx:v1

5.查看私有仓库的镜像

#查看所有
curl -XGET http://192.168.0.128:5000/v2/_catalog

 

 

你可能感兴趣的:(docker,centos7)