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

[经验分享] kubernetes1.9离线部署

[复制链接]

尚未签到

发表于 2018-9-15 13:33:02 | 显示全部楼层 |阅读模式
  环境
  Master: 192.168.20.93
  Node1: 192.168.20.94
  Node2: 192.168.20.95
  采用kubeadm安装
  kubeadm为kubernetes官方推荐的自动化部署工具,他将kubernetes的组件以pod的形式部署在master和node节点上,并自动完成证书认证等操作。
  因为kubeadm默认要从google的镜像仓库下载镜像,但目前国内无法访问google镜像仓库,所以已将镜像下好,只需要将离线包的镜像导入到节点中就可以了.\
  开始安装
  ----所有节点操作:----
  下载:
  链接:https://pan.baidu.com/s/1pMdK0Td 密码:zjja
  

[root@master ~]# md5sum k8s_images.tar.bz2  
b60ad6a638eda472b8ddcfa9006315ee  k8s_images.tar.bz2
  

  解压下载下来的离线包
  

[root@master ~]# tar -jxvf k8s_images.tar.bz2  
tar (child): bzip2: Cannot exec: No such file or directory
  
tar (child): Error is not recoverable: exiting now
  
tar: Child returned status 2
  
tar: Error is not recoverable: exiting now
  

  原因:没有bzip2解压工具,安装后解压:
  

[root@master ~]# yum -y install bzip2  
[root@master ~]# tar -jxvf k8s_images.tar.bz2
  

  安装启动docker,关闭selinux,firewalld,后
  配置系统路由参数,防止kubeadm报路由警告:
  

echo "  
net.bridge.bridge-nf-call-ip6tables = 1
  
net.bridge.bridge-nf-call-iptables = 1
  
" >> /etc/sysctl.conf
  
sysctl -p
  

  导入镜像:
  

[root@master /]# cd k8s_images/docker_images/  
[root@master docker_images]# for i in `ls`;do docker load < $i ;done
  

  安装kubelet kubeadm kubectl包:
  

[root@master docker_images]# cd ..  
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
  
rpm -ivh kubernetes-cni-0.6.0-0.x86_64.rpm  kubelet-1.9.9-9.x86_64.rpm  kubectl-1.9.0-0.x86_64.rpm
  
rpm -ivh kubectl-1.9.0-0.x86_64.rpm
  
rpm -ivh kubeadm-1.9.0-0.x86_64.rpm
  

  Master节点操作:
  开始初始化master:
  

[root@master k8s_images]# kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16  

  kubernetes默认支持多重网络插件如flannel、weave、calico,这里使用flanne,就必须要设置--pod-network-cidr参数,10.244.0.0/16是kube-flannel.yml里面配置的默认网段,如果需要修改的话,需要把kubeadm init的--pod-network-cidr参数和后面的kube-flannel.yml里面修改成一样的网段就可以了。
  部分会安装失败:
  发现原来是kubelet默认的cgroup的driver和docker的不一样,docker默认的cgroupfs,kubelet默认为systemd,需要将kubelet的cgroup改为和docker的cgroup相同:  &quot;Environment=&quot;KUBELET_CGROUP_ARGS=--cgroup-driver=systemd&quot;&quot;
  

vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf  
[Service]
  
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
  
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
  
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"
  
Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"
  
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
  
Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
  
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
  
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
  
ExecStart=
  
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS$KUBELET_EXTRA_ARGS
  

  重启reload
  

systemctl daemon-reload && systemctl restart kubelet  

  此时记得将环境reset一下
  执行:
  

kubeadm reset  

  在重新执行:
  

kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16  

  完成后,将kubeadm join xxx保存下来,等下node节点加入集群需要使用
  如果忘记了,可以在master上通过kubeadmin token list得到
  此时root用户还不能使用kubelet控制集群需要,按提示配置下环境变量
  对于非root用户
  

mkdir -p $HOME/.kube  
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  
chown $(id -u):$(id -g) $HOME/.kube/config
  

  对于root用户
  

export KUBECONFIG=/etc/kubernetes/admin.conf  

  也可以直接放到~/.bash_profile
  

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile  

  source一下环境变量
  

source ~/.bash_profile  

  kubectl version测试:
  

[root@master k8s_images]# kubectl version  
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.1", GitCommit:"3a1c9449a956b6026f075fa3134ff92f7d55f812", GitTreeState:"clean", BuildDate:"2018-01-04T11:52:23Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
  
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.1", GitCommit:"3a1c9449a956b6026f075fa3134ff92f7d55f812", GitTreeState:"clean", BuildDate:"2018-01-04T11:40:06Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
  

  安装网络,可以使用flannel、calico、weave、macvlan这里我们用flannel。
  下载此文件
  

wget https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml  

  或直接使用离线包里面的
  若要修改网段,需要kubeadm --pod-network-cidr=和这里同步
  vim kube-flannel.yml
  修改network项:
  &quot;Network&quot;: &quot;10.244.0.0/16&quot;,
  执行
  

kubectl create -f kube-flannel.yml  

  node节点操作
  使用刚刚kubeadm后的kubeadm join --xxx:
  

[root@node2 ~]# kubeadm join --token d508f9.bf00f1b8182fdc3f 192.168.20.93:6443 --discovery-token-ca-cert-hash sha256:3477ff532256a3ffe1915b3a504cd75a10989a49848cc0321cba0277830c2ac3  

  多次加入报错查看/var/log/message日志.
  加入成功
  在master节点上check一下:
  

[root@master k8s_images]# kubectl get nodes  
NAME               STATUS    ROLES     AGE       VERSION
  
master.flora.com   Ready     master    19h       v1.9.1
  
node1.flora.com    Ready         19h       v1.9.0
  
node2.flora.com    Ready         19h       v1.9.0
  

  kubernetes会在每个node节点创建flannel和kube-proxy的pod:
  

[root@master k8s_images]# kubectl get pods --all-namespaces  
NAMESPACE     NAME                                       READY     STATUS    RESTARTS   AGE
  
default       nginx-deployment-d5655dd9d-gc7c9           1/1       Running   0          17h
  
default       nginx-deployment-d5655dd9d-pjq5k           1/1       Running   0          17h
  
kube-system   etcd-master.flora.com                      1/1       Running   3          19h
  
kube-system   kube-apiserver-master.flora.com            1/1       Running   13         19h
  
kube-system   kube-controller-manager-master.flora.com   1/1       Running   9          19h
  
kube-system   kube-dns-6f4fd4bdf-ds2lf                   3/3       Running   23         19h
  
kube-system   kube-flannel-ds-5lhmm                      1/1       Running   0          19h
  
kube-system   kube-flannel-ds-cdhmr                      1/1       Running   1          19h
  
kube-system   kube-flannel-ds-l5w9b                      1/1       Running   0          19h
  
kube-system   kube-proxy-9794w                           1/1       Running   0          19h
  
kube-system   kube-proxy-986n2                           1/1       Running   0          19h
  
kube-system   kube-proxy-gmncl                           1/1       Running   1          19h
  
kube-system   kube-scheduler-master.flora.com            1/1       Running   8          19h
  

[root@master k8s_images]# kubectl get pods -n kube-system -o wide  
NAME                                       READY     STATUS    RESTARTS   AGE       IP              NODE
  
etcd-master.flora.com                      1/1       Running   3          19h       192.168.20.93   master.flora.com
  
kube-apiserver-master.flora.com            1/1       Running   13         19h       192.168.20.93   master.flora.com
  
kube-controller-manager-master.flora.com   1/1       Running   9          19h       192.168.20.93   master.flora.com
  
kube-dns-6f4fd4bdf-ds2lf                   3/3       Running   23         19h       10.244.0.4      master.flora.com
  
kube-flannel-ds-5lhmm                      1/1       Running   0          19h       192.168.20.94   node1.flora.com
  
kube-flannel-ds-cdhmr                      1/1       Running   1          19h       192.168.20.93   master.flora.com
  
kube-flannel-ds-l5w9b                      1/1       Running   0          19h       192.168.20.95   node2.flora.com
  
kube-proxy-9794w                           1/1       Running   0          19h       192.168.20.94   node1.flora.com
  
kube-proxy-986n2                           1/1       Running   0          19h       192.168.20.95   node2.flora.com
  
kube-proxy-gmncl                           1/1       Running   1          19h       192.168.20.93   master.flora.com
  
kube-scheduler-master.flora.com            1/1       Running   8          19h       192.168.20.93   master.flora.com



运维网声明 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-583603-1-1.html 上篇帖子: Kubernetes 架构(上)- 每天5分钟玩转 Docker 容器技术(120) 下篇帖子: Kubernetes之部署calico网络
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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