1 系統(tǒng)準備
操作系統(tǒng):
- Kubernetes 支持多種Linux發(fā)行版,包括但不限于 CentOS、Ubuntu、RHEL等。通常建議使用穩(wěn)定版本,并且是64位系統(tǒng)。我這里使用的是CentOS 8.1版本
cat /etc/centos-release
# CentOS Linux release 8.1.1911 (Core)
?硬件配置:
- 內存(RAM):每臺機器至少需要2GB或更多,具體需求根據集群規(guī)模和應用程序負載來定。
- CPU核心數(shù):每個節(jié)點至少需要2個物理核心或虛擬核心。
- 存儲空間:硬盤空間一般建議在30GB以上,以確保有足夠的空間用于容器鏡像、日志和其他數(shù)據存儲。
- 網絡連接:所有節(jié)點之間必須能夠通過網絡相互連接,無論是內部私有網絡還是公網連接。
配置網絡
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 添加以下內容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=039303a5-c70d-4973-8c91-97eaa071c23d
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.122.21
NETMASK=255.255.255.0
GATEWAY=192.168.122.1
DNS1=223.5.5.5
添加阿里源
rm -rfv /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
配置主機名
vim /etc/hosts
# 刪除原內容填寫以下內容
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.122.21 master01.paas.com master01
關閉swap,注釋swap分區(qū)
swapoff -a
vim /etc/fstab
# 刪除原內容填寫以下內容
#
# /etc/fstab
# Created by anaconda on Tue Mar 31 22:44:34 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=5fecb240-379b-4331-ba04-f41338e81a6e /boot ext4 defaults 1 2
/dev/mapper/cl-home /home xfs defaults 0 0
#/dev/mapper/cl-swap swap swap defaults 0 0
?配置內核參數(shù),將橋接的IPv4流量傳遞到iptables的鏈
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
2 安裝常用包
yum install vim bash-completion net-tools gcc -y
?3 使用aliyun源安裝docker-ce
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
?安裝docker-ce如果出現(xiàn)以下錯
CentOS-8 - Base - mirrors.aliyun.com 14 kB/s | 3.8 kB 00:00
CentOS-8 - Extras - mirrors.aliyun.com 6.4 kB/s | 1.5 kB 00:00
CentOS-8 - AppStream - mirrors.aliyun.com 16 kB/s | 4.3 kB 00:00
Docker CE Stable - x86_64 40 kB/s | 22 kB 00:00
Error:
Problem: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
- cannot install the best candidate for the job
- package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
- package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
- package containerd.io-1.2.2-3.el7.x86_64 is excluded
- package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
?解決辦法
wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install containerd.io-1.2.6-3.3.el7.x86_64.rpm
然后再安裝docker-ce即可成功
添加aliyundocker倉庫加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
?4 安裝kubectl、kubelet、kubeadm
?添加阿里kubernetes源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
?安裝,注意:我使用的是1.13.3版本
yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3
5 初始化k8s集群
注意:版本v1.13.3
kubeadm init \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.13.3 \--pod-network-cidr=10.244.0.0/16
初始化成功以后,根據提示執(zhí)行以下命令:
需牢記You can now join any number of machines by running the following on each node
as root:以下的token,如果需要多節(jié)點部署k8s,需要用到token
?6 初始化pod網絡
安裝容器網絡
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
7 單機部署集群
默認情況下,Kubernetes(k8s)集群的 Master 節(jié)點通常不會被配置為工作節(jié)點,也就是說,不會調度普通用戶的應用程序Pod在其上運行。為了確保Master節(jié)點資源主要用于控制平面組件,并且避免因應用程序Pod導致的安全風險或性能問題,Kubernetes 通常會在 Master 節(jié)點上添加特定的污點(Taints),從而阻止調度器將Pod調度到該節(jié)點上。
具體來說,使用?kubeadm
?初始化的 Kubernetes 集群會自動給 Master 節(jié)點加上一個名為?node-role.kubernetes.io/master:NoSchedule
?的污點(在較新版本中可能是?node-role.kubernetes.io/control-plane:NoSchedule
?或類似的形式),這意味著沒有明確容忍這個污點(Toleration)的Pod是不會被調度到 Master 節(jié)點上的。
如果確實需要讓 Pod 在 Master 節(jié)點上運行,有兩種方法可以實現(xiàn):
-
移除 Master 節(jié)點上的污點: 生產環(huán)境中不推薦這樣做,因為這可能會導致控制平面受到影響。
kubectl taint nodes <master-node-name> node-role.kubernetes.io/master:NoSchedule-
-
配置 Pod 容忍相關污點: 在應用的 Deployment、StatefulSet 等資源定義中,添加容忍(toleration)以允許 Pod 運行在帶有特定污點的節(jié)點上。文章來源:http://www.zghlxwxcb.cn/news/detail-830903.html
spec: tolerations: - key: "node-role.kubernetes.io/master" effect: "NoSchedule"
不過,在大多數(shù)情況下,最佳實踐仍然是保持 Master 節(jié)點專注于運行控制平面服務,并避免在其上部署任何非關鍵的應用程序工作負載。文章來源地址http://www.zghlxwxcb.cn/news/detail-830903.html
到了這里,關于單機部署K8S集群的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!