kubernetes 安装实践

作者: 一个全栈的小白 | 来源:发表于2017-08-19 14:02 被阅读121次

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

一、配置环境
  • 节点清单
主机名 IP 安装组件 说明
k8s-master 192.168.1.5 kubelet ,kubectl,kubeadm master节点
k8s-node1 192.168.1.6 node节点
  • 版本信息

    • Linux 版本 : CentOS Linux release 7.3.1611 (Core)
    $ cat /etc/redhat-release 
    CentOS Linux release 7.3.1611 (Core)
    
    • docker 版本:1.12.6
    $ docker version
    Client:
    Version:         1.12.6
    API version:     1.24
    Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
    Go version:      go1.7.4
    Git commit:      88a4867/1.12.6
    Built:           Mon Jul  3 16:02:02 2017
    OS/Arch:         linux/amd64
    
    Server:
    Version:         1.12.6
    API version:     1.24
    Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64
    Go version:      go1.7.4
    Git commit:      88a4867/1.12.6
    Built:           Mon Jul  3 16:02:02 2017
    OS/Arch:         linux/amd64
    
    • kubeadm版本:v1.7.3
    $ 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版本:v1.7.3
     $ kubelet --version
     Kubernetes v1.7.3
    
    • gcr.io镜像
    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
    
  • 系统设置

    • 关闭所有节点防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    
    • 关闭所有节点SELinux
    $ /usr/sbin/sestatus -v 
    $ vi /etc/selinux/config
    SELINUX=disabled
    
    • 所有节点上设置iptables参数
    $ vi /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    $ sysctl -p /etc/sysctl.d/k8s.conf
    
    • 修改hostname
    $ 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
    
  • 常见问题处理

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

二、安装组件
  • 安装docker
    • yum 安装
    $ yum intsall -y docker
    
    • 启动服务
    $ systemctl enable docker.service 
    $ systemctl start docker
    
  • 安装kubernetes
    • 配置yum源
    $ 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 安装
    $ yum install -y kubelet kubeadm kubectl
    
    • 配置kubectl
  $ kubectl cluster-info
  • 启动kubelet
$ systemctl enable kubelet.service
  • 拉取镜像

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

#!/bin/bash
set -o errexit
set -o nounset
set -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
    • 在初始化时要加上 kubernetes-version
    $ kubeadm init \
    --kubernetes-version=v1.7.3 \
    --pod-network-cidr=10.244.0.0/16 \
    --apiserver-advertise-address=192.168.61.91
    
    • 配置kubectl访问集群
    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"}  
    
  • 安装Pod Network
    • flannel network add-on
    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确保所有的Pod都处于Running状态。
    kubectl get pod --all-namespaces -o wide
    

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

参考文档:

相关文章

网友评论

    本文标题:kubernetes 安装实践

    本文链接:https://www.haomeiwen.com/subject/khetdxtx.html