【kubernetes 系列2】centos7.6 kubeadm安装Kubernetes 1.14.1 集群

【kubernetes 系列2】centos7.6 kubeadm安装Kubernetes 1.14.1 集群

一. 环境

OS version:CentOS Linux release 7.6.1810 (Core)
Docker version:19.03.0-beta3
server list:
10.18.18.16    server1.ukr    用来安装kubernetes master
10.18.18.7    server2.ukr 用作kubernetes minion (minion1)
10.18.19.8    server3.ukr 
10.18.18.3    server4.ukr 用作kubbernetes minion (minion2)

二、基础环境的搭建

1、关闭防火墙
2、关闭selinux
3、创建/etc/sysctl.d/k8s.conf文件

添加如下内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

执行命令使修改生效。
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

4、kube-proxy开启ipvs的前置条件 【master和node都需要执行】

cat > /etc/sysconfig/modules/ipvs.modules <

5、安装并启动Docker【master和node都需要执行】

# 安装docker的yum源:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum install -y docker-ce

# 启动docker
systemctl start docker
# 设置自启动
systemctl enable docker

6、安装并启动kubernetes核心组件【master和node都需要执行】

# 设置源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 安装kubelet kubeadm klubectl
yum makecache fast
yum install -y kubelet kubeadm kubectl

# 将kubelet设置为自启动
systemctl enable kubelet.service

到此为每台server配置好kubernetes的环境,并安装上了docker和kubernetes核心组件。但是每天server是彼此独立的单机环境,我们的目标是需要设置一个kubernetes的集群环境,所以我们需要选出一个master的节点, 将其他的服务器作为minion节点。

三、集群的环境配置

7、主节点初始化
7.1 安装主节点的必要组件。

如:kube-apiserver、kube-controller-manager、kube-scheduler、etcd、pause、coredns等。
kube-apiserver:master的核心控制,不论通过kubectl还是使用remote api 直接控制,都要经过apiserver;
kube-controller-manager:对replication controller, endpoints controller, namespace controller, and serviceaccounts controller的循环控制,与kube-apiserver交互,保证这些controller工作;
kube-scheduler:Kubernetes scheduler的作用就是根据特定的调度算法将pod调度到指定的工作节点(minion)上;
etcd:用于存储集群的网络;
coredns:用于容器内部的域名;
pause:在pod中担任Linux命名空间共享的基础;

MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/openthings

# 拉取镜像
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-apiserver:v1.14.1
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-controller-manager:v1.14.1
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-scheduler:v1.14.1
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-proxy:v1.14.1
docker pull ${MY_REGISTRY}/k8s-gcr-io-etcd:3.3.10
docker pull ${MY_REGISTRY}/k8s-gcr-io-pause:3.1
docker pull ${MY_REGISTRY}/k8s-gcr-io-coredns:1.3.1

# 添加Tag
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-apiserver:v1.14.1 k8s.gcr.io/kube-apiserver:v1.14.1
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-scheduler:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-controller-manager:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-proxy:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1
docker tag ${MY_REGISTRY}/k8s-gcr-io-etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag ${MY_REGISTRY}/k8s-gcr-io-pause:3.1 k8s.gcr.io/pause:3.1
docker tag ${MY_REGISTRY}/k8s-gcr-io-coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

7.2 初始化主节点

kubeadm init --kubernetes-version=v1.14.1 --apiserver-advertise-address=10.18.18.16 --pod-network-cidr=10.244.0.0/16

注:主节点只能初始化一次,如果需要重新初始化的,可以通过kubead reset 重置。

7.3 配置集群

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
echo export KUBECONFIG=~/.kube/config>> ~/.bashrc
source ~/.bashrc

7.4 查看集群状态

[root@server1 ~]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"} 

7.5 安装flannel网络

我们是使用kubectl来安装flannel网络。 可以使用以下百度云盘的kube-flannel.yml

链接:https://pan.baidu.com/s/1sDHQLc6UAK9MIwm5HiE_Qg 
提取码:zada 

通过下面的命令安装网络。
kubectl apply -f kube-flannel.yml

查看flannel安装是否成功:kubectl get pods --all-namespace

【kubernetes 系列2】centos7.6 kubeadm安装Kubernetes 1.14.1 集群_第1张图片

这里kubernetes的主节点和网络都已经设置完成了。下面就是组建集群。 包括:minior节点的加入和移出集群,主节点同时充当工作节点的设置。

四、集群的组建

kubernetes的master node,通常情况下只负责整个集群的所有pod的调度, 并不作为minior node负载具体的pod。当master node的资源比较充裕、整个集群规模不大,可以把master node设置成同时负载pod,以提供服务器的总负载能力。

8.1 查看主节点(server1.ukr),可以被分配pod的策略
 

[root@server1 ~]# kubectl describe node server1.ukr | grep Taint
Taints:             node-role.kubernetes.io/master:NoSchedule


这表示只有拥有和这个 taint 相匹配的 toleration 的 pod 才能够被分配到 server1.ukr 这个节点。 显然这个是设置了负载门槛的。我们可以通过以下方式删除这种策略,让主节点和其他minior节点一样,任意负载pod。 当然你可以通过设置toleration的匹配规则,在不删除taints的情况下使用主节点

8.2 删除主节点(server1.ukr)的被分配pod的策略

[root@server1 ~]# kubectl taint nodes server1.ukr node-role.kubernetes.io/master-
node "server1.ukr" untainted

taint和toleration的具体使用方法参照:https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/

9 向集群中添加新的工作节点
在任意一个minior的节点上执行以下操作加入到集群中去

kubeadm join server1.ukr:6443 \
 --token difb39.v00p1ms46pjiyop0 \
 --discovery-token-ca-cert-hash 4481f81e7db781a698c6b3491cf8f07a492eb5552f46eb81a4e29ab60f1321d9

集群的扩容和缩容具体参见:https://blog.csdn.net/shgh_2004/article/details/90439817

你可能感兴趣的:(kubernetes)