什么是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,看見如下界面,表示集群搭建成功: