kubeadm離線部署kubernetes1.12.1
阿新 • • 發佈:2018-12-17
一、叢集元件
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
到此叢集配置成功!