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

[经验分享] kubernetes 1.4.5集群部署

[复制链接]

尚未签到

发表于 2017-6-2 08:14:11 | 显示全部楼层 |阅读模式
2016/11/16 23:39:58



环境: centos7



  • [fu@centos server]$ uname -a
  • Linux centos 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux





1. 初始化环境

关闭防火墙:



  • [iyunv@k8s-master fu]# systemctl stop firewalld
  • [iyunv@k8s-master fu]# systemctl disable firewalld

1.1 环境:



节点IPnode-1192.168.44.129node-2192.168.44.131node-3192.168.44.132
1.2 设置hostname

hostnamectl --static set-hostname hostname


IPhostname192.168.44.129k8s-master192.168.44.131k8s-node-1192.168.44.132k8s-node-2

master:


  • [iyunv@centos fu]# hostnamectl --static set-hostname  k8s-master

node-1


  • [iyunv@centos fu]# hostnamectl --static set-hostname  k8s-node-1


node-2


  • [iyunv@centos fu]# hostnamectl --static set-hostname  k8s-node-2



1.3 配置 hosts



  • vi /etc/hosts





IPhostname192.168.44.129k8s-master192.168.44.131k8s-node-1192.168.44.132k8s-node-2


分别在hosts中加入:


  • 192.168.44.129    k8s-master
  • 192.168.44.131    k8s-node-1
  • 192.168.44.132    k8s-node-2



或者,直接执行,在hosts中追加:


  • echo '192.168.44.129    k8s-master
  • 192.168.44.131    k8s-node-1
  • 192.168.44.132    k8s-node-2' >> /etc/hosts

1.4安装kubelet 和kubeadm

添加yum  (注:root用户下执行)


  • cat <<EOF > /etc/yum.repos.d/k8s.repo
  • [kubelet]
  • name=kubelet
  • baseurl=http://files.rm-rf.ca/rpms/kubelet/
  • enabled=1
  • gpgcheck=0
  • EOF

安装并启动:


  • yum install docker kubelet kubeadm kubectl kubernetes-cni
  • systemctl enable docker && systemctl start docker
  • systemctl enable kubelet && systemctl start kubelet




2 部署 kubernetes master

2.1 添加yum(如环境统一处理,此处略过)

注:root用户下执行


  • cat <<EOF> /etc/yum.repos.d/k8s.repo
  • [kubelet]
  • name=kubelet
  • baseurl=http://files.rm-rf.ca/rpms/kubelet/
  • enabled=1
  • gpgcheck=0
  • EOF


安装 kubernetes依赖环境:

yum有很多源,大多是网络上的。makecache建立一个缓存,以后用install安装软件时就在缓存中搜索,提高了速度。


  • [iyunv@k8s-master fu]# yum makecache
  • [iyunv@k8s-master fu]# yum install -y socat kubelet kubeadm kubectl kubernetes-cni

DSC0000.png
DSC0001.png



2.2 安装docker




  • wget -qO- https://get.docker.com/ | sh

如果提示:



  • bash: wget: 未找到命令

则先安装wget:


  • [iyunv@centos fu]#  yum -y install wget

如果已经安装过dokcer则可直接启动:
提示未启动:


  • [iyunv@centos fu]# docker images
  • Cannot connect to the Docker daemon. Is the docker daemon running on this host?



DSC0002.png


docker设为开机启动并启动:


  • systemctl enable docker
  • systemctl start docker



2.3 下载镜像



  • images=(kube-proxy-amd64:v1.4.5 kube-discovery-amd64:1.0 kubedns-amd64:1.7 kube-scheduler-amd64:v1.4.5 kube-controller-manager-amd64:v1.4.5 kube-apiserver-amd64:v1.4.5 etcd-amd64:2.2.5 kube-dnsmasq-amd64:1.3 exechealthz-amd64:1.1 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.4.1)
  • for imageName in ${images[@]} ; do
  •   docker pull jicki/$imageName
  •   docker tag jicki/$imageName gcr.io/google_containers/$imageName
  •   docker rmi jicki/$imageName
  • done

2.4 启动 kubernetes



  • systemctl enable kubelet
  • systemctl start kubelet

2.5 创建集群



  • kubeadm init --api-advertise-addresses=192.168.44.129 --use-kubernetes-version v1.4.5

如提示:




  • Running pre-flight checks
  • preflight check errors:
  • /etc/kubernetes is not empty



则:


  • [iyunv@k8s-master kubernetes]# rm -rf manifests/

然后再执行 init

2.6 记录 token

init打出的日志,把加入集群的token记录下来。



  • Kubernetes master initialised successfully!

  • You can now join any number of machines by running the following on each node:

  • kubeadm join --token=a46536.cad65192491d2fd9 192.168.44.129



2.7 检查 kubelet 状态





  • systemctl status kubelet

DSC0003.png
2.8 查询集群pods:



  • [iyunv@k8s-master system]# kubectl get nodes

DSC0004.png


3 部署 kubernetes node


3.1 安装docker



  • wget -qO- https://get.docker.com/ | sh

如果提示:



  • bash: wget: 未找到命令

则先安装wget:



  • [iyunv@centos fu]#  yum -y install wget

设置docker开机启动并启动:


  • systemctl enable docker
  • systemctl start docker

3.2 下载镜像



  • images=(kube-proxy-amd64:v1.4.5 kube-discovery-amd64:1.0 kubedns-amd64:1.7 kube-scheduler-amd64:v1.4.5 kube-controller-manager-amd64:v1.4.5 kube-apiserver-amd64:v1.4.5 etcd-amd64:2.2.5 kube-dnsmasq-amd64:1.3 exechealthz-amd64:1.1 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.4.1)
  • for imageName in ${images[@]} ; do
  •   docker pull jicki/$imageName
  •   docker tag jicki/$imageName gcr.io/google_containers/$imageName
  •   docker rmi jicki/$imageName
  • done

3.3 安装并启动 kubernetes(如环境统一处理,此处略过)

可以按上面先指定yum源,速度会有提升


  • yum makecache
  • yum install -y socat kubelet kubeadm kubectl kubernetes-cni





  • systemctl enable kubelet
  • systemctl start kubelet

3.4 加入集群

复制自己master创建集群的返回值


  • kubeadm join --token=a46536.cad65192491d2fd9 192.168.44.129

返回如下错误,须手动清空该目录
DSC0005.png

如果此错误,请查看防火墙或selinux
DSC0006.png

返回:
DSC0007.png




都加入成功后,通过get nodes查看集群状态:
DSC0008.png

重启机器会有延迟:
DSC0009.png

4 设置 kubernetes


  • [fu@k8s-master ~]$ kubectl apply -f https://git.io/weave-kube
  • daemonset "weave-net" created





4.2 查看系统服务状态
查看所有的namespaces中的pods



  • [fu@k8s-master ~]$ kubectl get pods --all-namespaces



DSC00010.png

kube-dns 必须配置完网络才能 Running



4.3 其他主机控制集群

将master中文件,/etc/kubernetes/admin.conf拷贝到其它node节点,可以下载再上传,也可以主机间拷贝
主机间拷贝:



  • [iyunv@k8s-master fu]# scp admin.conf fu@192.168.44.131:/home/fu
  • [iyunv@k8s-master fu]# scp admin.conf fu@192.168.44.132:/home/fu



复制文件命令格式:scp local_file remote_username@remote_ip:remote_folder
DSC00011.png

node节点查询集群nodes状态命令:


  • [fu@k8s-node-2 ~]$ kubectl --kubeconfig ./admin.conf get nodes

可以看到跟在master上运行效果一样:
DSC00012.png
想看一下admin.conf是啥,可以more或cat,more按空格分页

  • [iyunv@k8s-master fu]# more admin.conf


4.4 配置dashboard

#在master节点下载 yaml 文件, 直接导入会去官方拉取images


  • [fu@k8s-master ~]$ curl -O https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml

DSC00013.png
编辑 yaml 文件,默认的 yaml 文件中对于 image 拉取策略的定义是 无论何时都会去拉取镜像



  • [fu@k8s-master ~]$ vi kubernetes-dashboard.yaml
编辑 yaml 改一下 imagePullPolicy,把 Always 改成 IfNotPresent(本地没有再去拉取) 或者 Never(从不去拉取) 即可



  • imagePullPolicy: Always
  • 修改为:
  • imagePullPolicy: IfNotPresent


DSC00014.png
修改为:
DSC00015.png
创建:

  • [fu@k8s-master ~]$ kubectl create -f ./kubernetes-dashboard.yaml



DSC00016.png


查看 NodePort ,既外网访问端口

  • [fu@k8s-master ~]$ kubectl describe svc kubernetes-dashboard --namespace=kube-system
通过 describe 命令我们可以查看其暴露出的 NodePoint,然后便可访问:

DSC00017.png



浏览器中访问 dashboard,端口NodePort
192.168.44.129:32145
如打不开,可以查看一下pod状态,是否创建完成。

  • [fu@k8s-master ~]$ kubectl get pod --namespace=kube-system

都Running后,效果如下:


如有遇到此问题,按下解决,我没遇到。

  • FAQ:
  • kube-discovery error

  • failed to create "kube-discovery" deployment [deployments.extensions "kube-discovery" already exists]


  • systemctl stop kubelet;
  • docker rm -f -v $(docker ps -q);
  • find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v;
  • rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd;

  • systemctl start kubelet

  • kubeadm init





参考地址:http://www.xf80.com/2016/10/31/kubernetes-update-1.4.5/#section-8
推荐博客***:https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/


github上,kubernetes版本:https://github.com/kubernetes/kubernetes/releases

DSC00018.png



来自为知笔记(Wiz)

运维网声明 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-382525-1-1.html 上篇帖子: kubernetes单机板 下篇帖子: centos7 kubernetes单机安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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