什么是Kubernetes?
Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。使用Kubernetes可以:
- 自动化容器的部署和复制
- 随时扩展或收缩容器规模
- 将容器组织成组,并且提供容器间的负载均衡
- 很容易地升级应用程序容器的新版本
- 提供容器弹性
部署
第一步:环境说明
192.168.1.13 master 192.168.1.14 node-01 192.168.1.15 node-02
第二步:关闭防火墙等(all)
# 1.关闭防火墙 systemctl stop firewalld && systemctl disable firewalld # 2.关闭selinux setenforce 0 vim /etc/selinux/config SELINUX=enforcing改为SELINUX=disabled,保存后退出 # 3.关闭交换分区 swapoff -a sed -i 's/.*swap.*/#&/' /etc/fstab # 4.iptables设置 iptables -P FORWARD ACCEPT
第三步:安装docker(all)
# 1.安装 yum install docker -y # 2.启动和默认启动 systemctl start docker && systemctl enable docker # 3.配置 cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://阿里个人加速网址.mirror.aliyuncs.com"], "exec-opts":["native.cgroupdriver=systemd"], "graph": "/new-path/docker" # 该路径必须存在 } EOF
第四步:启动docker时配置iptables(all)
vim /etc/systemd/system/docker.service [Service]下面添加 ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
第五步:设置host(all)
# 在不同的服务器上运行 hostnamectl set-hostname master hostnamectl set-hostname node-01 hostnamectl set-hostname node-02 # 所有的服务器都运行 cat >> /etc/hosts << EOF 192.168.1.13 master 192.168.1.14 node-01 192.168.1.15 node-02 EOF
第六步:设置yum源(all)
cat > /etc/yum.repos.d/docker.repo <<EOF [docker-repo] name=Docker Repository baseurl=http://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7 enabled=1 gpgcheck=0 EOF cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF cat > /etc/yum.repos.d/kubernetes.repo << EOF [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 kubectl(all)
# 1.安装 yum install -y kubelet kubeadm kubectl docker # 2.启动 systemctl enable kubelet && systemctl start kubelet
第八步:初始化master节点(master)
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address 192.168.1.13 --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.18.0 #--image-repository:下载镜像的地址 #--apiserver-advertise-address:apiserver的地址,一般是本机IP #--pod-network-cidr:容器间通信的虚拟IP网段 #--kubernetes-version:kubernetes版本
第九步:安装flannel网络(all)
# 1.添加IP和hostname的对应关系 cat >> /etc/hosts << EOF 151.101.76.133 raw.githubusercontent.com EOF # 2.下载并启动flannel kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
第十步:添加node节点
# 1.查看jion命令 kubeadm token create --print-join-command # 2.将查询的jion命令直接在node节点运行即可
第十一步:检查集群是否安装成功
# 使用nginx进行测试 [root@master-01 nginx]# cat nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-service labels: app: nginx spec: ports: - port: 88 targetPort: 80 selector: app: nginx type: NodePort
查看Pod和Service是否成功运行:
在浏览器中访问192.168.1.13:32325,看见如下界面,表示集群搭建成功: