1. 程式人生 > >kubeadm離線部署kubernetes1.12.1

kubeadm離線部署kubernetes1.12.1

一、叢集元件

master:

  • kube-controller-manager
  • kube-scheduler
  • kube-apiserver
  • etcd

nodes:

  • kubelet
  • kube-proxy
  • docker
    • docker registry

網路環境:

  • 節點網路:192.168.0.0/24
  • Service網路:10.96.0.0/12
  • Pod網路:10.244.0.0/16(flannel預設)

安裝過程:kubeadm

1、master,nodes:安裝kubelet,kubeadm,docker

2、master:kubeadm init

3、nodes:kubeadm join

叢集環境:

  • master:192.168.0.7
  • node1:192.168.0.8
  • node2:192.168.0.9

主機環境:

  • 時間同步
  • 關閉firewalld
  • 關閉selinux
  • 基於主機名解析

二、開始部署master

1、安裝配置docker

# vim /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
# yum localinstall http://mirrors.aliyun.com/centos-vault/7.3.1611/extras/x86_64/Packages/container-selinux-2.9-4.el7.noarch.rpm -y
# yum install docker-ce -y
# systemctl start docker
# systemctl enable docker
# docker load < k8s-images-1.12.1.tar  #獲取映象包見以下指令碼
# docker image ls
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy                v1.12.1             61afff57f010        2 weeks ago         96.6MB
k8s.gcr.io/kube-controller-manager   v1.12.1             aa2dd57c7329        2 weeks ago         164MB
k8s.gcr.io/kube-apiserver            v1.12.1             dcb029b5e3ad        2 weeks ago         194MB
k8s.gcr.io/kube-scheduler            v1.12.1             d773ad20fd80        2 weeks ago         58.3MB
k8s.gcr.io/etcd                      3.2.24              3cab8e1b9802        4 weeks ago         220MB
k8s.gcr.io/coredns                   1.2.2               367cdc8433a4        7 weeks ago         39.2MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        10 months ago       742kB
#!/bin/bash
k8s='kube-proxy:v1.12.1
kube-apiserver:v1.12.1
kube-controller-manager:v1.12.1
kube-scheduler:v1.12.1
etcd:3.2.24
coredns:1.2.2
pause:3.1'
for i in $k8s; do
        docker pull k8s.gcr.io/$i
done
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o k8s-images-1.12.1.tar

2、安裝kubernetes

  • 確保以下值為1(master和nodes都需要改)
# vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
# sysctl -p
# cat /proc/sys/net/bridge/bridge-nf-call-iptables
# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# yum install kubelet kubeadm kubectl -y

3、初始化kubernetes_master

# systemctl enable kubelet
# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
# kubeadm init --kubernetes-version=v1.12.1 --pod-network-cidr=10.224.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap  #初始化完成後切記將以下資訊記錄
kubeadm join 192.168.0.7:6443 --token 7d8i09.uz3hrjfftoxzk9y1 --discovery-token-ca-cert-hash sha256:621d62945f30ce15c31ac40b81a1267c8c02a2bfc8730c93e0f6dc152c7de1ec

4、配置master

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

5、檢查cs健康性

# kubectl get cs
NAME                 STATUS    MESSAGE              ERROR
controller-manager   Healthy   ok                   
scheduler            Healthy   ok                   
etcd-0               Healthy   {"health": "true"}
# kubectl get componentstatus

6、部署flannel

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# kubectl get nodes
# kubectl get pods -n kube-system

三、部署nodes

  • 按照以上master的方法安裝docker-ce
  • 按照以上master的方法配置yum源
  • 按照以上master的方法匯入docker映象
  • 在所有的node節點上操作相同

1、安裝kubeadm和kubelet

# yum install kubeadm kubelet -y
# systemctl enable kubelet

2、配置kubelet

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

3、將node加入叢集(以下資訊從master初始化完成後列印到螢幕的資訊獲取)

# kubeadm join 192.168.0.7:6443 --token 7d8i09.uz3hrjfftoxzk9y1 --discovery-token-ca-cert-hash sha256:621d62945f30ce15c31ac40b81a1267c8c02a2bfc8730c93e0f6dc152c7de1ec --ignore-preflight-errors=Swap

四、檢查叢集狀態

  • 在master上檢查nodes狀態
# kubectl get nodes
NAME             STATUS   ROLES    AGE   VERSION
master.k8s.com   Ready    master   24h   v1.12.1
node01.k8s.com   Ready    <none>   24h   v1.12.1
node02.k8s.com   Ready    <none>   24h   v1.12.1
  • 在master上檢查pods
# kubectl get pods -n kube-system
# kubectl get pods -n kube-system -o wide

到此叢集配置成功!