为了账号安全,请及时绑定邮箱和手机立即绑定

kubernetes 安装实践

标签:
Kubernetes

初次接触kubernetes,以此来记录集群部署的过程!!!

一、配置环境
  • 节点清单

主机名IP安装组件说明
k8s-master192.168.1.5kubelet ,kubectl,kubeadmmaster节点
k8s-node1192.168.1.6
node节点
  • 版本信息

    $ cat /etc/redhat-release 
    CentOS Linux release 7.3.1611 (Core)
    $ docker versionClient:Version:         1.12.6API version:     1.24Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
    Go version:      go1.7.4Git commit:      88a4867/1.12.6Built:           Mon Jul  3 16:02:02 2017OS/Arch:         linux/amd64Server:Version:         1.12.6API version:     1.24Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
    Go version:      go1.7.4Git commit:      88a4867/1.12.6Built:           Mon Jul  3 16:02:02 2017OS/Arch:         linux/amd64
    $ kubeadm version
    kubeadm version: &version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.3",       GitCommit:"2c2fe6e8278a5db2d15a013987b53968c743f2a1", GitTreeState:"clean", BuildDate:"2017-08-03T06:43:48Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
     $ kubelet --version
     Kubernetes v1.7.3
    gcr.io/google_containers/kube-apiserver-amd64            v1.7.3             
    gcr.io/google_containers/kube-controller-manager-amd64   v1.7.3              
    gcr.io/google_containers/kube-scheduler-amd64            v1.7.3              
    gcr.io/google_containers/kube-proxy-amd64                v1.7.3                
    quay.io/coreos/flannel                                   v0.8.0-amd64        
    gcr.io/google_containers/etcd-amd64                      3.0.17              
    gcr.io/google_containers/pause-amd64                     3.0     
    gcr.io/google_containers/k8s-dns-kube-dns-amd64          1.14.4             
    gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64     1.14.4
    gcr.io/google_containers/k8s-dns-sidecar-amd64           1.14.4
    • gcr.io镜像

    • kubelet版本:v1.7.3

    • kubeadm版本:v1.7.3

    • docker 版本:1.12.6

    • Linux 版本 : CentOS Linux release 7.3.1611 (Core)

  • 系统设置

    systemctl stop firewalld
    systemctl disable firewalld
    $ /usr/sbin/sestatus -v 
    $ vi /etc/selinux/config
    SELINUX=disabled
    $ vi /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1$ sysctl -p /etc/sysctl.d/k8s.conf
    $ vi /etc/hosts 
    127.0.0.1   localhost k8s-master localhost4 localhost4.localdomain4::1         localhost k8s-master localhost6 localhost6.localdomain6
    $ vi /etc/hostname
    k8s-master
    $ reboot
    • 重启主机

    • 修改hostname

    • 所有节点上设置iptables参数

    • 关闭所有节点SELinux

    • 关闭所有节点防火墙

  • 常见问题处理

    修改 Linux 内核文件 sysctl  -P 报错
    $ sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables:没有那个文件或目录 modprobe bridge lsmod|grep bridge

二、安装组件
  • 安装docker

    $ yum intsall -y docker
    $ systemctl enable docker.service 
    $ systemctl start docker
    • 启动服务

    • yum 安装

  • 安装kubernetes

    $ cat >> /etc/yum.repos.d/kubernetes.repo <<EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=0
    EOF
    $ yum install -y kubelet kubeadm kubectl
    • 配置kubectl

    • yum 安装

    • 配置yum源

webp

  $ kubectl cluster-info
  • 启动kubelet

$ systemctl enable kubelet.service
  • 拉取镜像

由于从国外拉取镜像比较坑,从阿里云获取kubernetes 所需的镜像

#!/bin/bashset -o errexitset -o nounsetset -o pipefail

KUBE_VERSION=v1.7.3
KUBE_PAUSE_VERSION=3.0
ETCD_VERSION=3.0.17
DNS_VERSION=1.14.4
FINANNEL_VERSION=v0.8.0-amd64

GCR_URL=gcr.io/google_containers
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/kubernetes_kubeadm

images=(kube-proxy-amd64:${KUBE_VERSION}kube-scheduler-amd64:${KUBE_VERSION}kube-controller-manager-amd64:${KUBE_VERSION}kube-apiserver-amd64:${KUBE_VERSION}pause-amd64:${KUBE_PAUSE_VERSION}etcd-amd64:${ETCD_VERSION}k8s-dns-sidecar-amd64:${DNS_VERSION}k8s-dns-kube-dns-amd64:${DNS_VERSION}k8s-dns-dnsmasq-nanny-amd64:${DNS_VERSION}kube-flannel:${FINANNEL_VERSION})for imageName in ${images[@]} ; do
  docker pull $ALIYUN_URL/$imageName
  docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName
  do

三、kubernetes集群部署

  • 初始化kubeadm

    $ kubeadm init \
    --kubernetes-version=v1.7.3 \
    --pod-network-cidr=10.244.0.0/16 \
    --apiserver-advertise-address=192.168.61.91
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    $ kubectl get cs
    NAME                 STATUS    MESSAGE              ERROR
    scheduler            Healthy   ok                   
    controller-manager   Healthy   ok                   
    etcd-0               Healthy   {"health": "true"}
    • 查看集群状态

    • 配置kubectl访问集群

    • 在初始化时要加上 kubernetes-version

  • 安装Pod Network

    mkdir -p ~/k8s/$ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
    $ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    $ kubectl create -f kube-flannel-rbac.yml
    clusterrole "flannel" created
    clusterrolebinding "flannel" created
    $ kubectl apply -f  kube-flannel.yml
    serviceaccount "flannel" created
    configmap "kube-flannel-cfg" created
    daemonset "kube-flannel-ds" created
    kubectl get pod --all-namespaces -o wide
    • 使用kubectl get pod --all-namespaces -o wide确保所有的Pod都处于Running状态。

    • flannel network add-on

到这一步,运用kubeadm 安装k8s 1.7 就算成功了,下来就是运用kubectl 来操作部署运行实际的容器!!!



作者:一个全栈的小白
链接:https://www.jianshu.com/p/0d85626e7498


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消