ZeroKong
文章19
标签16
分类6
Centos7搭建Kubernetes(本地)

Centos7搭建Kubernetes(本地)

约1k字 预计需要5分钟

Centos7搭建Kubernetes(本地)

Centos7搭建Kubernetes(本地)

1安装要求

一台或多台机器,操作系统 CentOS7.x-86_x64

  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  • 集群中所有机器之间网络互通
  • 可以访问外网,需要拉取镜像
  • 禁止swap分区

2虚拟机环境

Master Node Worker Node 01 Worker Node 02
CPU 2个1核 2个1核 2个1核
内存 2G 2G 2G
磁盘 30G 30G 30G
系统 CentOS7.7 1908 CentOS7.7 1908 CentOS7.7 1908
IP 192.168.200.100 192.168.200.101 192.168.200.102
网关 192.168.200.2 192.168.200.2 192.168.200.2
所有Centos7最小化安装

3准备环境(Master和Worker节点都要配置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

关闭selinux
setenforce 0 #临时关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config #一键替换内容


关闭swap
swapoff -a #临时关闭
vi /etc/fstab #这里要自己编辑将swap行注释掉就行了

添加主机名与IP对应关系(记得设置主机名)
设置主机名
vi /etc/sysconfig/network
HOSTNAME=k8s-master(这里填你的节点名称,master就填master的worker就填worker的)
192.168.200.100 k8s-master
192.168.200.101 k8s-node1
192.168.200.102 k8s-node2

将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

4所有节点安装Docker/kubeadm/kubelet

安装Docker

1
2
3
4
5
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version
Docker version 18.06.1-ce, build e68fc7a

4.1添加阿里云YUM软件源

1
2
3
4
5
6
7
8
9
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

4.2安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署

1
2
3
yum install -y kubelet-1.14.0 kubeadm-1.14.0 kubectl-1.14.0
systemctl enable kubelet
#安装kubelet 后会在/etc下生成文件目录/etc/kubernetes/manifests/

5部署Kubernetes Master Node(仅在Master Node上执行)

在192.168.200.100(Master)执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
kubeadm init \
--apiserver-advertise-address=172.16.3.40 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.14.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
# kubeadm 以后将会在 /etc 路径下生成配置文件和证书文件
[root@k8s-master ~]# tree /etc/kubernetes/
kubernetes/
├── admin.conf
├── controller-manager.conf
├── kubelet.conf
├── manifests
│ ├── etcd.yaml
│ ├── kube-apiserver.yaml
│ ├── kube-controller-manager.yaml
│ └── kube-scheduler.yaml
├── pki
│ ├── apiserver.crt
│ ├── apiserver-etcd-client.crt
│ ├── apiserver-etcd-client.key
│ ├── apiserver.key
│ ├── apiserver-kubelet-client.crt
│ ├── apiserver-kubelet-client.key
│ ├── ca.crt
│ ├── ca.key
│ ├── etcd
│ │ ├── ca.crt
│ │ ├── ca.key
│ │ ├── healthcheck-client.crt
│ │ ├── healthcheck-client.key
│ │ ├── peer.crt
│ │ ├── peer.key
│ │ ├── server.crt
│ │ └── server.key
│ ├── front-proxy-ca.crt
│ ├── front-proxy-ca.key
│ ├── front-proxy-client.crt
│ ├── front-proxy-client.key
│ ├── sa.key
│ └── sa.pub
└── scheduler.conf

配置kubectl工具

1
2
3
4
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get nodes

6安装Pod网络插件(CNI)

1
2
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

如果下载失败,可以改成这个镜像地址:roeslys/flannel

7加入Kubernetes Worker Node

在192.168.200.101/102(Worker)执行
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:这个在master init初始化时会有提示,更换为自己的IP和token。

1
2
kubeadm join 192.168.200.100:6443 --token e24u92.nhc4aibm29qm6aa7 \
--discovery-token-ca-cert-hash sha256:4ff8d93d025d512d4c10f25db64fd8ab06f775c4c1f479afc1e9656076893891

如果不小心忘记那么用以下命令可以获取到token与–discovery-token-ca-cert-hash 需要的值
获取token

1
2
3
4
5
6
7
8
9
kubeadm token list
#得到以下内容
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
7jkzs5.bspgkxqovqq4hb5m 19h 2019-12-12T17:15:19+08:00 authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
#TOKEN对应的值就是所需要的第一个值

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
#可以得到第二--discovery-token-ca-cert-hash需要的值
4ff8d93d025d512d4c10f25db64fd8ab06f775c4c1f479afc1e9656076893891

加入过后可以在Master节点使用kubectl get nodes查看节点状况

1
2
3
4
5
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 17h v1.14.0
k8s-node1 Ready <none> 3h39m v1.14.0
k8s-node2 Ready <none> 3h39m v1.14.0

参考文章

简书-搭建k8s集群完整篇

本文作者:ZeroKong
本文链接:https://blog.zerokong.com/20191211-Kubernetes/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×