搭建kubernetes集群


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

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM