目录
- 1、kubernetes,简称 K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多
- 个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效(powerful),Kubernetes
- 提供了应用部署,规划,更新,维护的一种机制。
-
- 2、kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具,这个工具能通过两条指令完成一个
- kubernetes集群的部署。
-
- (1)创建一个 Master 节点
- kubeadm init
-
- (2)将一个 Node 节点加入到当前集群中
- kubeadm join
- 在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
-
- (1)一台或多台机器,操作系统 CentOS7.x-86_x64
-
- (2)硬件配置:3GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
-
- (3)可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
-
- (4)禁止swap分区
- 1、集群规划
-
- node1 192.168.215.140 (master)
-
- node2 192.168.215.141 (slave)
-
- node3 192.168.215.142 (slave)
-
-
- 2、必要环境准备(3台都执行)
-
- (1) 都关闭防火墙
- systemctl stop firewalld
- systemctl disable firewalld
-
- (2) 都关闭selinux
- setenforce 0 # 临时
- sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
-
-
- (3) 都关闭swap
- swapoff -a # 临时
- sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
-
- (4) 根据规划设置主机名
- hostnamectl set-hostname node1
- hostnamectl set-hostname node2
- hostnamectl set-hostname node3
-
- (5) 只在master140添加hosts
- cat >> /etc/hosts << EOF
- 192.168.215.140 node1
- 192.168.215.141 node2
- 192.168.215.142 node3
- EOF
-
- (6) 三台服务器,将桥接的IPv4流量传递到iptables的链
- cat > /etc/sysctl.d/k8s.conf << EOF
- net.bridge.bridge-nf-call-ip6tables = 1
- net.bridge.bridge-nf-call-iptables = 1
- EOF
-
- (7) sysctl --system # 生效
-
- (8) 时间同步
- yum install ntpdate -y
- ntpdate time.windows.com
-
- (9) 重启所有服务器
-
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
- 3台都需要安装docker
-
- 1、使用wget命令下载docker-ce.repo
-
- wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
-
- 2、安装docker18.06.1版本
-
- yum -y install docker-ce-18.06.1.ce-3.el7
-
- 3、设置开机自启,并启动docker
-
- systemctl enable docker && systemctl start docker
-
- 4、查看docker版本
-
- docker --version
-
设置docker镜像仓库地址为:阿里巴巴的地址,加速镜像下载
- 3台都需要设置仓库地址
-
- 1、创建文件夹
-
- sudo mkdir -p /etc/docker
-
- 2、替换镜像仓库地址
-
- sudo tee /etc/docker/daemon.json <<-'EOF'
- {
- "registry-mirrors": ["https://p4e9di9t.mirror.aliyuncs.com"]
- }
- EOF
-
- 3、重启docker
-
- systemctl daemon-reload
-
- systemctl restart docker
- 3台都执行
-
- 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=0
- repo_gpgcheck=0
- gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
- EOF
- 1、安装指定版本的1.18,避免兼容性问题
-
- yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
-
- 2、设置开机自启
-
- systemctl enable kubelet
- 1、在192.168.215.140(Master)执行。
-
- 2、service-cidr 和 pod-network-cidr 只要是和当前网段不冲突的ip就可以。
-
- 3、由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
- kubeadm init \
- --apiserver-advertise-address=192.168.215.140 \
- --image-repository registry.aliyuncs.com/google_containers \
- --kubernetes-version v1.18.0 \
- --service-cidr=10.96.0.0/12 \
- --pod-network-cidr=10.244.0.0/16
- 在 140 master上面继续执行
-
- 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
-
- 发现只有master一个节点,并且状态是 “未准备”
把从节点加入到master当中去,从而组成一个集群,所以接下来的操作基本都是在141/142 从节点上面执行的。
- 在140 master 节点上面执行如下命令,生成token,从而让其他节点加入进来,默认24h有效
-
- kubeadm token create --print-join-command
- 复制master上面生成的命令,在从节点141/142上面分别执行:
-
- kubeadm join 192.168.215.140:6443 --token bycusu.59ms8jd3eq24762t --discovery-token-ca-cert-hash sha256:27beb79651247a57b6272f27f6e2c6d64085a2130b0103387e4cf0cd2e85e167
- kubectl get nodes
-
- 在master上面执行该命令,发现节点数量增加了2个
- 1、在master上面执行该命令,需要等待5-10分钟,若失败,多执行几次
-
- kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
-
- 2、查看详细系统状态 ,需要每个是Running
-
- kubectl get pods -n kube-system
-
-
- 3、查看节点状态,每个node都是reaady
-
- kubectl get nodes
-
- 【注】当2和3都是running与ready状态表示cni网络插件已经安装完成
- 在Kubernetes集群中创建一个pod,验证是否正常运行:master
-
- 1、kubectl create deployment nginx --image=nginx
-
- 2、kubectl get pod,svc 查看状态是否为running,然后执行第3步暴露端口
-
- 3、kubectl expose deployment nginx --port=80 --type=NodePort
-
- 4、kubectl get pod,svc 查看映射端口是多少
-
- 访问地址:http://192.168.215.140:32491
- kubeadm reset -f
- modprobe -r ipip
- lsmod
- rm -rf ~/.kube/
- rm -rf /etc/kubernetes/
- rm -rf /etc/systemd/system/kubelet.service.d
- rm -rf /etc/systemd/system/kubelet.service
- rm -rf /usr/bin/kube*
- rm -rf /etc/cni
- rm -rf /opt/cni
- rm -rf /var/lib/etcd
- rm -rf /var/etcd
- yum clean all
- yum remove kube*