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节点都要配置)
关闭防火墙
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
参考文章
原创文章,作者:zerokong,如若转载,请注明出处:
https://blog.zerokong.com/%E5%AD%A6%E4%B9%A0/10.html