kubeadm的方式部署,每个节点只需要安装kubelet和docker
将kube-controller-manager、kube-schedule和api-server以POD的方式部署
将node上的kube-proxy也是以POD的方式部署
安装步骤:
step1:
master、node 安装kubelet、kubeadm、docker
step2:
master:kubeadm init
step3:
node:kubeadm join
安装前准备:
1、配置/etc/hosts、使得master和node能互相解析
2、配置ntp时间同步
yum -y install ntp
vi /etc/ntp.conf
restrict ntp.ntsc.ac.cn nomodify notrap noquery
server ntp.ntsc.ac.cn
ntpdate -u ntp.ntsc.ac.cn
master 配置
需要pull的image
k8s.gcr.io/kube-apiserver:v1.15.3
k8s.gcr.io/kube-controller-manager:v1.15.3
k8s.gcr.io/kube-scheduler:v1.15.3
k8s.gcr.io/kube-proxy:v1.15.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
由于国内某不可言说的原因,在用kubeadm的时候无法pull到镜像,所以从docker hub上的googlecontainer上pull镜像,然后重新打tag
docker pull googlecontainer/kube-apiserver:v1.15.3
docker pull googlecontainer/kube-controller-manager:v1.15.3
docker pull googlecontainer/kube-scheduler:v1.15.3
docker pull googlecontainer/kube-proxy:v1.15.3
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1
docker tag docker.io/googlecontainer/kube-proxy:v1.15.3 k8s.gcr.io/kube-proxy:v1.15.3
docker image rm googlecontainer/kube-proxy:v1.15.3
docker tag googlecontainer/kube-apiserver:v1.15.3 k8s.gcr.io/kube-apiserver:v1.15.3
docker image rm googlecontainer/kube-apiserver:v1.15.3
docker tag googlecontainer/kube-scheduler:v1.15.3 k8s.gcr.io/kube-scheduler:v1.15.3
docker image rm googlecontainer/kube-scheduler:v1.15.3
docker tag googlecontainer/kube-controller-manager:v1.15.3 k8s.gcr.io/kube-controller-manager:v1.15.3
docker image rm googlecontainer/kube-controller-manager:v1.15.3
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker image rm coredns/coredns:1.3.1
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker image rm mirrorgooglecontainers/etcd:3.3.10
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker image rm mirrorgooglecontainers/pause:3.1
k8s默认不允许开启swap,编辑kubelet配置文件,使其忽略swap错误
vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
开始初始化master节点,注:***–ignore-preflight-errors=Swap*** 使其忽略swap错误
kubeadm init --kubernetes-version=v1.15.3 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
kubeadm join 172.20.3.100:6443 --token h1f3ee.cpkf5sj6dzb2y478 \
--discovery-token-ca-cert-hash sha256:064e0e4eaa12f427c3e22071795dfc9ff2c554fef1b758e1a54f119104cd5a58
如果忘记了,使用kubeadm token create --print-join-command 获取
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown
(
i
d
−
u
)
:
(id -u):
(id−u):(id -g) $HOME/.kube/config
安装flannel组建
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
验证STATUS为ready
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 75m v1.15.3
确认flannel的image已经pull到本地
[root@master ~]# docker image ls | grep flannel
quay.io/coreos/flannel v0.11.0-amd64 ff281650a721 7 months ago 52.6MB
[root@master ~]# kubectl get ns
NAME STATUS AGE
default Active 77m
kube-node-lease Active 77m
kube-public Active 77m
kube-system Active 77m
查看kube-system的pods运行正常
[root@master ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-5c98db65d4-smqqf 1/1 Running 0 76m
coredns-5c98db65d4-wxksp 1/1 Running 0 76m
etcd-master 1/1 Running 0 76m
kube-apiserver-master 1/1 Running 0 76m
kube-controller-manager-master 1/1 Running 0 76m
kube-flannel-ds-amd64-rxhds 1/1 Running 0 4m19s
kube-proxy-jk2gz 1/1 Running 0 76m
kube-scheduler-master 1/1 Running 0 76m
node节点配置
安装docker-ce kubelet kubeadm kubectl包
yum install docker-ce kubelet kubeadm kubectl
systemctl enable docker
systemctl enable kubelet
配置忽略swap报错参数
vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
加入集群
kubeadm join 192.168.153.209:6443 --token xskbnl.jv0en1vbgisc0b5g --discovery-token-ca-cert-hash sha256:63dfdc6d871337649e9094378a9ea957fa56c5269703b6f50184e2a9db5d0b33 --ignore-preflight-errors=Swap
最后检查集群状态和PODs状态
kubectl get nodes