kubernetes单节点安装

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

环境准备

系统环境为Centos7

1
2
3
4
5
6
7
8
$ systemctl stop firewalld
$ systemctl disable firewalld
$ vim /etc/sysconfig/selinux
SELINUX=enforcing

#有需要开启此选项
$ echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
$ echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

安装K8S服务

  1. 下载安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #尽量安装官方ce版本,centos默认yum里的docker版本过低,不能编译dockerfile。
    $ yum install -y docker-ce
    $ systemctl enable docker && systemctl start docker
    #修改docker拉取镜像源
    $ vim /etc/docker/daemon.json

    "registry-mirrors": ["https://registry.docker-cn.com","https://4e9n046r.mirror.aliyuncs.com","http://8618acef.m.daocloud.io"] 
    }
    $ systemctl daemon-reload && systemctl restart docker

    $ yum install -y kubelet kubeadm kubectl kubernetes-cni
    $ systemctl enable kubelet && systemctl start kubelet
  2. 拉取所需要的镜像
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #拉取镜像,重命名为 gcr.io/google_containers 开头,以共kubeadm使用
    $ docker pull warrior/pause-amd64:3.0 && docker tag warrior/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0
    $ docker pull warrior/etcd-amd64:3.0.17 && docker tag warrior/etcd-amd64:3.0.17 gcr.io/google_containers/etcd-amd64:3.0.17
    $ docker pull warrior/kube-apiserver-amd64:v1.6.0 && docker tag warrior/kube-apiserver-amd64:v1.6.0 gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
    $ docker pull warrior/kube-scheduler-amd64:v1.6.0 && docker tag warrior/kube-scheduler-amd64:v1.6.0 gcr.io/google_containers/kube-scheduler-amd64:v1.6.0
    $ docker pull warrior/kube-controller-manager-amd64:v1.6.0 && docker tag warrior/kube-controller-manager-amd64:v1.6.0 gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
    $ docker pull warrior/kube-proxy-amd64:v1.6.0 && docker tag warrior/kube-proxy-amd64:v1.6.0 gcr.io/google_containers/kube-proxy-amd64:v1.6.0
    $ docker pull gysan/dnsmasq-metrics-amd64:1.0 && docker tag gysan/dnsmasq-metrics-amd64:1.0 gcr.io/google_containers/dnsmasq-metrics-amd64:1.0
    $ docker pull zhaoqing/k8s-dns-kube-dns-amd64:1.14.4 && docker tag zhaoqing/k8s-dns-kube-dns-amd64:1.14.4 gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4
    $ docker pull zhaoqing/k8s-dns-dnsmasq-nanny-amd64:1.14.4 && docker tag zhaoqing/k8s-dns-dnsmasq-nanny-amd64:1.14.4 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4
    $ docker pull zhaoqing/k8s-dns-sidecar-amd64:1.14.4 && docker tag zhaoqing/k8s-dns-sidecar-amd64:1.14.4 gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4
    $ docker pull awa305/kube-discovery-amd64:1.0 && docker tag awa305/kube-discovery-amd64:1.0 gcr.io/google_containers/kube-discovery-amd64:1.0
    $ docker pull gysan/exechealthz-amd64:1.2 && docker tag gysan/exechealthz-amd64:1.2 gcr.io/google_containers/exechealthz-amd64:1.2
  3. 安装master
    1
    2
    $ kubeadm init --kubernetes-version=v1.9.4 --pod-network-cidr=10.244.0.0/16
    #提示 kubeadm join --token ed33ee.b7c7c5303fac4385 192.168.11.1:6443 代表master安装完成

注意:
1.9版本因为提升性能,默认需要关闭swap分区
执行:swapoff -a

1
2
3
4
#复制配置文件,供kubectl使用
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. 使master节点成为node
    1
    $ kubectl taint nodes --all node-role.kubernetes.io/master-
  2. 安装CNI插件
    1
    $ kubectl apply -f https://git.io/weave-kube-1.6
  3. 验证集群安装完成
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ kubectl get node
    NAME STATUS AGE VERSION
    kub-master Ready 1h v1.7.5

    $ kubectl get pod --all-namespaces
    NAMESPACE NAME READY STATUS RESTARTS AGE
    kube-system etcd-kub-master 1/1 Running 1 1h
    kube-system kube-apiserver-kub-master 1/1 Running 1 1h
    kube-system kube-controller-manager-kub-master 1/1 Running 1 1h
    kube-system kube-dns-2838158301-vlhf5 3/3 Running 0 51m
    kube-system kube-proxy-0d3t6 1/1 Running 0 1h
    kube-system kube-scheduler-kub-master 1/1 Running 1 1h
    kube-system weave-net-ptv9f 2/2 Running 0 1h