原创学习

Centos7搭建Kubernetes(本地)

本文阅读 3 分钟
首页 学习 正文

1安装要求

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

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

2虚拟机环境

Master NodeWorker Node 01Worker Node 02
CPU2个1核2个1核2个1核
内存2G2G2G
磁盘30G30G30G
系统CentOS7.7 1908CentOS7.7 1908CentOS7.7 1908
IP192.168.200.100192.168.200.101192.168.200.102
网关192.168.200.2192.168.200.2192.168.200.2

所有Centos7最小化安装

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

关闭防火墙
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

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软件源

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

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

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)执行

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工具

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)

$ 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。

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

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

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查看节点状况

[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/%E5%AD%A6%E4%B9%A0/10.html

Centos7搭建ELK 7.4服务器(二)ELK的配置
« 上一篇 10-22
【1995】-中华小当家
下一篇 » 01-29