一、安裝前的準備工作
在安裝k8s集群前,我們需要進行一些準備工作:
1、選擇合適的操作系統
Ubuntu18.04及以上版本、CentOS7及以上版本、Debian9及以上版本等
2、準備至少3台物理或虛擬機
1台Master節點,2台或以上的Worker節點
3、配置節點的主機名和hosts
修改 /etc/hosts 文件,加入各節點主機名和對應的IP地址
二、安裝Docker
通過Docker來管理Kubernetes所需要的容器。
1、安裝必要的一些系統工具
$ sudo apt-get update
$ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
2、添加Docker官方的GPG密鑰
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
3、添加Docker的安裝源
Ubuntu 20.10:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Ubuntu 18.04:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
CentOS 7:
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4、更新apt或yum包列表
$ sudo apt-get update
$ sudo yum makecache
5、安裝Docker
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo yum install docker-ce docker-ce-cli containerd.io
6、啟動Docker服務
$ sudo systemctl start docker
$ sudo service docker start
7、設置Docker開機自啟
$ sudo systemctl enable docker
$ sudo chkconfig docker on
8、驗證Docker是否安裝成功
$ sudo docker run hello-world
三、安裝Kubernetes
1、添加阿里雲的Kubernetes安裝源和GPG密鑰
$ cat < /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
2、安裝Kubectl和Kubeadm
$ sudo apt-get update
$ sudo apt-get install -y kubelet kubeadm kubectl
3、拉取所需鏡像
$ sudo kubeadm config images pull
4、初始化Master節點
創建 kubeadm.yaml 文件
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.0.100 # Master節點IP地址
bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: stable
controlPlaneEndpoint: "k8s-ha:6443" # 集群VIP地址
dnsDomain: cluster.local
apiServer:
certSANs:
- 192.168.0.100 # Master節點IP地址
- 127.0.0.1
- k8s-ha
controlPlaneEndpoint: k8s-ha:6443 # 安裝會創建 HAProxy 服務自動配置
networking:
podSubnet: "10.244.0.0/16" # 此IP段不能與實際網路中的IP段衝突
EOF
執行初始化Master命令
$ sudo kubeadm init --config kubeadm.yaml
如果因為網路原因等導致初始化失敗,可以使用如下命令重置
$ sudo kubeadm reset -f
5、配置kubectl
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
6、部署網路插件
# 選擇 Calico 網路插件
$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
7、將Worker節點加入集群
在每個啟動了Docker的 Worker 節點上運行初始化命令
$ sudo kubeadm join k8s-ha:6443 --token xxxxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxx
8、查看節點狀態
$ kubectl get nodes
四、使用HAProxy部署高可用Kubernetes集群
1、安裝HAProxy
$ sudo apt-get install haproxy -y
2、替換HAProxy的配置文件
修改/haproxy/haproxy.cfg文件(注釋掉原文件所有內容,並用以下內容替換):
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL).
ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend k8s-frontend
bind *:6443
mode tcp
default_backend k8s-backend
backend k8s-backend
mode tcp
balance roundrobin
option tcp-check
server k8s-master-1 192.168.0.100:6443 check inter 1000 rise 3 fall 3
server k8s-master-2 192.168.0.101:6443 check inter 1000 rise 3 fall 3
server k8s-master-3 192.168.0.102:6443 check inter 1000 rise 3 fall 3
3、開啟ip_forward
$ sudo sysctl net.ipv4.ip_forward=1
$ sudo sysctl -p
4、啟動HAProxy服務
$ systemctl restart haproxy
5、重啟所有Master節點
$ systemctl restart kubelet
6、在Master節點上檢查集群狀態
$ kubectl get nodes
如果所有節點處於 Ready 狀態,則Kubernetes集群已成功高可用部署。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293965.html