设为首页 收藏本站
查看: 1864|回复: 0

[经验分享] Kubernetes环境搭建

[复制链接]

尚未签到

发表于 2017-11-16 17:08:33 | 显示全部楼层 |阅读模式
第一种安装方案(官网)
  基于官方的安装方式(安装包并非是最新版本的)
准备CentOS 7.x环境
  查看内核版本

[iyunv@k8s-master kube-yaml]# uname -r
3.10.0-514.6.1.el7.x86_64
[iyunv@k8s-master kube-yaml]#
  最好是选择3.10版本以上的内核,进行安装。
本次安装,选择了4台服务器进行集群安装。

[iyunv@k8s-master kube-yaml]# cat /etc/hosts
10.200.102.93 k8s-master
10.200.102.92 k8s-node-1
10.200.102.81 k8s-node-2
10.200.102.82 k8s-node-3
[iyunv@k8s-master kube-yaml]#
  配置官方k8s yum源:

[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源:

[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/    http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
  更新本地镜像源

yum clean all
yum makecache
安装Kubernetes环境(Master)

yum -y install --enablerepo=virt7-docker-common-release kubernetes etcd flannel
DSC0000.png
安装的过程有点久,因为需要下载和安装。期间如果出现什么下载失败,更新包更新失败。基本上都是因为yum的问题,换个国内大企业的镜像yum就好了。
DSC0001.png
至此,整个下载和安装的过程就算成功了。
编辑本地host文件,做好访问映射:vim /etc/hosts


[iyunv@k8s-master kube-yaml]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.200.102.93 k8s-master
10.200.102.92 k8s-node-1
10.200.102.81 k8s-node-2
10.200.102.82 k8s-node-3
DSC0002.png
编辑k8s的配置文件信息:vi /etc/kubernetes/config
DSC0003.png
由于CentOS 7.x默认是开启防火墙的,需要进行防火墙的设置操作:
关闭SELinux:setenforce 0
1、临时关闭(不用重启机器):


setenforce 0 #设置SELinux 成为permissive模式
setenforce 1 #设置SELinux 成为enforcing模式
DSC0004.png
2、关闭防火墙:


systemctl stop firewalld.service
systemctl disable firewalld.service
  编辑etcd的配置文件信息:vi /etc/etcd/etcd.conf
DSC0005.png
  编辑k8s的配置信息:vi /etc/kubernetes/apiserver
DSC0006.png
  启动etcd服务:systemctl start etcd
DSC0007.png
  创建网络,并且设置网络配置信息:

etcdctl mkdir /kube-centos/network
etcdctl mk /kube-centos/network/config
"{\"Network\":\"172.30.0.0/16\",\"SubnetLen\":24,\"Backend\":{\"Type\":\"vxlan\"}}"
DSC0008.png

  配置flanneld信息:vi /etc/sysconfig/flanneld
DSC0009.png
  运行环境:for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler flanneld; do systemctl restart $SERVICES; systemctl enable $SERVICES; systemctl status $SERVICES; done
DSC00010.png DSC00011.png
  至此k8s-master的安装和启动到此完成。
安装Kubernetes环境(Minion/Node):
  内核版本和yum源配置,请参考上面部分进行配置就可以了。

yum -y install --enablerepo=virt7-docker-common-release kubernetes flannel

  安装的过程有点久,因为需要下载和安装。期间如果出现什么下载失败,更新包更新失败。基本上都是因为yum的问题,换个国内大企业的镜像yum就好了。

至此,整个下载和安装的过程就算成功了。
  编辑本地host文件,做好访问映射:vim /etc/hosts

[iyunv@k8s-master kube-yaml]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.200.102.93 k8s-master
10.200.102.92 k8s-node-1
10.200.102.81 k8s-node-2
10.200.102.82 k8s-node-3

  由于CentOS 7.x默认是开启防火墙的,需要进行防火墙的设置操作:
关闭SELinux:setenforce 0
1、临时关闭(不用重启机器):

setenforce 0 #设置SELinux 成为permissive模式
setenforce 1 #设置SELinux 成为enforcing模式

2、关闭防火墙:


systemctl stop firewalld.service
systemctl disable firewalld.service
  编辑k8s的配置文件信息:vi /etc/kubernetes/config

  配置kubernetes信息:vi /etc/kubernetes/kubelet
DSC00012.png
  配置flanneld信息:vi /etc/sysconfig/flanneld

  运行环境:for SERVICES in kube-proxy kubelet flanneld docker; do systemctl restart $SERVICES; systemctl enable $SERVICES; systemctl status $SERVICES; done DSC00013.png
  配置参数:

kubectl config set-cluster default-cluster --server=http://k8s-master:8080
kubectl config set-context default-context --cluster=default-cluster --user=default-admin
kubectl config use-context default-context
DSC00014.png

第二种安装方案(tar安装)
  服务器环境:

10.15.206.120 vip
10.15.206.105 master
10.15.206.106 node

10.15.206.107 etcd1 node
10.15.206.108 etcd2 node
10.15.206.109 etcd3
第一步:配置flannel网卡,先在etcd中注册flannel子网:

etcdctl set /coreos.com/network/config '{"network": "172.16.0.0/16"}'
第二步:在所有节点安装flannel

yum install -y flannel
第三步:修改flannel配置文件/etc/sysconfig/flanneld

FLANNEL_ETCD="http://10.15.206.107:2379,http://10.15.206.108:2379,http://10.15.206.109:2379"
FLANNEL_ETCD_KEY="/coreos.com/network"
  重启flannel:

systemctl start flanneld
systemctl enable flanneld
  需要说明的是,如果要让docker使用flannel的网络,docker必须要后于flannel启动,所以需要重新启动docker

systemctl restart docker
第四步:下载地址
  kubernetes-client地址
https://storage.googleapis.com/kubernetes-release/release/v1.5.3/kubernetes-client-linux-amd64.tar.gz
  kubernetes-server地址:
https://storage.googleapis.com/kubernetes-release/release/v1.5.3/kubernetes-server-linux-amd64.tar.gz
第五步:在server端服务器解压包
  tar zxvf kubernetes-server-linux-amd64.tar.gz cd kubernetes/server/bin
  然后将文件复制到/usr/local/bin下

for i in `ls -F|grep "*"|awk '{print $1}'|awk -F "*" '{print $1}'`;
do
   cp $i /usr/local/bin/ ;
done
第六步:启动master
  启动api-server

kube-apiserver
             --address=0.0.0.0
             --insecure-port=8080
             --service-cluster-ip-range='10.15.206.120/24'
             --log_dir=/usr/local/kubernetes/logs/kube
             --kubelet_port=10250
             --v=0
             --logtostderr=false
             --etcd_servers=http://10.15.206.107:2379,http://10.15.206.108:2379,http://10.15.206.109:2379
             --allow_privileged=false >> /usr/local/kubernetes/logs/kube-apiserver.log 2>&1 &
  启动controller-manager

kube-controller-manager
                       --v=0
                       --logtostderr=false
                       --log_dir=/usr/local/kubernetes/logs/kube
                       --master=10.15.206.120:8080 >> /usr/local/kubernetes/logs/kube-controller-manager 2>&1 &
  启动scheduler

kube-scheduler
              --master='10.15.206.120:8080'
              --v=0
              --log_dir=/usr/local/kubernetes/logs/kube >> /usr/local/kubernetes/logs/kube-scheduler.log 2>&1 &
第七步:验证是否成功

kubectl get componentstatuses
     NAME           STATUS  MESSAGE               ERROR
controller-manager Healthy    ok
scheduler          Healthy    ok
etcd-2             Healthy    {"health": "true"}
etcd-0             Healthy    {"health": "true"}
etcd-1             Healthy    {"health": "true"}
第八步:配置client

tar zxvf kubernetes-client-linux-amd64.tar.gz
cd kubernetes/client/bin
cp * /usr/local/bin/
第九步:启动client
  启动kubelet

kubelet
       --logtostderr=false
       --v=0
       --allow-privileged=false
       --log_dir=/usr/local/kubernetes/logs/kube
       --address=0.0.0.0
       --port=10250
       --hostname_override=10.15.206.120
       --api_servers=http://10.15.206.120:8080 >> /usr/local/kubernetes/logs/kube-kubelet.log 2>&1 &
  启动proxy

kube-proxy
          --logtostderr=false
          --v=0
          --master=http://10.15.206.120
第三种安装方案(calico)
环境介绍:
服务器IpHostsCentos-7.310.200.102.95k8s-masterCentos-7.310.200.102.94k8s-node-1Centos-7.310.200.102.85k8s-node-2Centos-7.310.200.102.90k8s-node-3  确保操作系统的内核是3.10版本以上的。
并且关闭防火墙和selinux。

setenforce 0
systemctl stop firewalld.service
systemctl disable firewalld.service
  根据需要是否配置必要的源,可以参考上述的源配置。
etc环境安装(可以选择集群的方案安装)
  服务器 IP Hosts
| 服务器 | Ip | Hosts |
| ————- |:—————:|:———:|
| Centos-7.3 | 10.200.102.85 | Echo0 |
| Centos-7.3 | 10.200.102.86 | Echo1 |
| Centos-7.3 | 10.200.102.84 | Echo2 |
  安装ectd环境
DSC00015.png
  配置etcd信息
DSC00016.png
DSC00017.png

  启动服务
DSC00018.png
所有的节点都进行如上相应的配置
安装k8s master环境

yum install kubernetes-master docker -y
  配置好相应的kubernetes信息
DSC00019.png
DSC00020.png

  配置好docker信息
DSC00021.png
  查看集群信息
DSC00022.png
安装k8s node环境

yum install kubernetes-node docker –y
  配置k8s和docker信息
配置kubectl DSC00023.png
配置proxy DSC00024.png
配置config DSC00025.png
配置docker镜像拉取位置 DSC00026.png
  查看集群信息
DSC00027.png
安装kube-dns环境(master节点)

下载kube-dns命令
# wget https://dl.k8s.io/v1.5.2/kubernetes-server-linux-amd64.tar.gz
# tar -xf kubernetes-server-linux-amd64.tar.gz
# mv /opt/docker/src/kubernetes/server/bin/kube-dns /usr/bin/

新建kube-dns配置文件
# vi /etc/kubernetes/kube-dns
KUBE_DNS_PORT="--dns-port=53"
KUBE_DNS_DOMAIN="--domain=cluster.local"
KUBE_DNS_MASTER=--kube-master-url="http://10.200.102.95:8080”
KUBE_DNS_ARGS=""

新建kube-dns.service配置文件
# cat /usr/lib/systemd/system/kube-dns.service
[Unit]
Description=Kubernetes Kube-dns Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=kube-apiserver.service
Requires=kube-apiserver.service

[Service]
WorkingDirectory=/var/lib/kube-dns
EnvironmentFile=-/etc/kubernetes/kube-dns
ExecStart=/usr/bin/kube-dns \
            $KUBE_DNS_PORT \
            $KUBE_DNS_DOMAIN \
            $KUBE_DNS_MASTER \
            $KUBE_DNS_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target

Master启动
# mkdir -p /var/lib/kube-dns
# systemctl enable kube-dns
# systemctl restart kube-dns

master修改/etc/resolv.conf文件
# cat /etc/resolv.conf
# Generated by NetworkManager
search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.200.102.95
nameserver 223.5.5.5
nameserver 202.96.128.86
  node结点修改kubelet文件
DSC00028.png
  验证kube-dns是否安装成功
DSC00029.png
安装calico环境
  配置各个节点docker环境:
DSC00030.png
DSC00031.png
DSC00032.png
  配置好,记得重启docker

# systemctl  daemon-reload
# systemctl  restart docker
  下载calico插件

Master节点:
# wget https://github.com/projectcalico/calicoctl/releases/download/v1.1.0/calicoctl
# chmod +x calicoctl
# mv calicoctl  /usr/bin/
# docker pull docker.io/calico/node:v1.1.0
# docker tag  docker.io/calico/node:v1.1.0  quay.io/calico/node:v1.1.0
#wget N -P /opt/cni/bin/
https://github.com/projectcalico/calico-cni/releases/download/v1.6.0/calico
# wget -N -P /opt/cni/bin/
https://github.com/projectcalico/calico-cni/releases/download/v1.6.0/calico-ipam
# chmod +x /opt/cni/bin/calico /opt/cni/bin/calico-ipam

Node节点:
# docker pull docker.io/calico/node:v1.1.0
# docker tag  docker.io/calico/node:v1.1.0  quay.io/calico/node:v1.1.0
# wget -N -P /opt/cni/bin/
https://github.com/projectcalico/calico-cni/releases/download/v1.6.0/calico
# wget -N -P /opt/cni/bin/
https://github.com/projectcalico/calico-cni/releases/download/v1.6.0/calico-ipam
# chmod +x /opt/cni/bin/calico /opt/cni/bin/calico-ipam
  配置文件(所有节点)
DSC00033.png
DSC00034.png
DSC00035.png
  Master机上
wget http://docs.projectcalico.org/v1.5/getting-started/kubernetes/installation/policy-controller.yaml
  修改 policy-controller.yaml文件里的etcd的地址
DSC00036.png
  启动文件:

# serivce etcd restart
# kubectl  create -f policy-controller.yaml

每个节点上启动calico-node服务(ETCD_AUTHORITY可以配置多个(集群方案))
# systemctl enable calico-node
# systemctl start calico-node
# export ETCD_AUTHORITY=10.200.102.85:2379

验证calico是否启动正常
calicoctl node status
calicoctl get nodes --out=wide
DSC00037.png
DSC00038.png

  添加子网
DSC00039.png DSC00040.png
DSC00041.png
  至此calico的k8s方案搭建成功

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-407628-1-1.html 上篇帖子: k8s+docker(学习.....) 下篇帖子: k8s记录-0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表