服務器:輕量級阿里云+輕量級騰訊云
系統要求:OS7
本內容適用于已經對整個搭建程序有一定了解的人來看,每一步沒有做很多解釋,但是里面包含著很多的細節,有一點遺漏就搭建不起來,希望可以自己先按照網上別的教程隨便搭建幾次,了解流程了,然后再看這篇,肯定會對你有幫助的,
基礎環境
設定hostname
hostnamectl set-hostname xxxx
配置hosts
公網 hostname
echo "IP 自定義hostname" >> /etc/hosts
安裝Docker
安裝命令
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install wget
yum makecache
wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum -y install containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install docker-ce docker-ce-cli containerd.io
啟動:systemctl enable docker --now
如果已經有docker注意版本,低版本需要修改(具體需不需要可以先改了,如果docker重啟啟動不起來,就說明不需要,刪掉即可)
修改docker驅動:
vim /usr/lib/systemd/system/docker.service
在ExecStart命令結尾添加 --exec-opt native.cgroupdriver=systemd
安裝K8S
以下一些命令參考自網上的一些安裝教程
cat > k8s.conf <<EOF
#開啟網橋模式
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#開啟轉發
net.ipv4.ip_forward = 1
##關閉ipv6
net.ipv6.conf.all.disable_ipv6=1
EOF
cp k8s.conf /etc/sysctl.d/k8s.conf
sysctl -p /etc/sysctl.d/k8s.conf
setenforce 0
swapoff -a
# 設定系統時區為 中國/上海
timedatectl set-timezone Asia/Shanghai
# 將當前的UTC時間寫入硬體時鐘
timedatectl set-local-rtc 0
# 重啟依賴于系統時間的服務
systemctl restart rsyslog
systemctl restart crond
systemctl stop postfix && systemctl disable postfix
mkdir /var/log/journal # 持久化保存日志的目錄
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]
# 持久化
Storage=persistent
# 壓縮歷史日志
Compress=yes
SysnIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
# 最大占用空間 10G
SystemMaxUse=10G
# 單日志檔案最大 200M
SystemMaxFileSize=200M
# 日志保存時間 2 周
MaxRetentionSec=2week
# 不將日志轉發到 syslog
ForwardToSyslog=no
EOF
systemctl restart systemd-journald
modprobe br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
swapoff -a
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
安裝三大件
yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
systemctl enable --now kubelet
修改組態檔
vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
在$KUBELET_EXTRA_ARGS添加--node-ip=82.157.149.78(空格分割)
開放埠(來自網路)
10250/10260 TCP埠:給kube-schedule、kube-controll,kube-proxy、kubelet等使用
6443 TCP埠:給kube-apiserver使用
2379 2380 2381 TCP商品:ETCD使用
8472 UDP埠:vxlan使用埠
設定虛擬網卡
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 <<EOF
BOOTPROTO=static
DEVICE=eth0:1
IPADDR=公網IP
PREFIX=32
TYPE=Ethernet
USERCTL=no
ONBOOT=yes
EOF
systemctl restart network
# 查看
ip addr
以上master和node都需要執行
以下master執行↓
配置kubeadm
kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kubernetesVersion: v1.20.13
apiServer:
certSANs:
- aliyun-master
- 公網
- 內網
- 10.96.0.1
controlPlaneEndpoint: 公網:6443
networking:
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
---
apiVersion: kubeproxy-config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
SupportIPVSProxyMode: true
mode: ipvs
安裝
kubeadm init --config=kubeadm-config.yaml
初始化成功后master執行生成的命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm join xx.xx.xx.xx:6443 --token dfijdth \
--discovery-token-ca-cert-hash dfsdfsdfsdfg9a460f44b118050091245c1d
安裝ipvs(主節點+子節點)
yum install ipvsadm
修改apiserver組態檔
vim /etc/kubernetes/manifests/kube-apiserver.yaml
spec:
containers:
- command:
- kube-apiserver
- --advertise-address=公網IP
- --bind-address=0.0.0.0
安裝網路插件flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
修改組態檔 對比修改缺什么補充什么
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.15.1
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --public-ip=$(PUBLIC_IP)
- --iface=eth0
# env下
env:
- name: PUBLIC_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
安裝flannel
kubectl apply -f kube-flannel.yml
開啟ipvs轉發模式
kubectl edit configmaps -n kube-system kube-proxy
kind: KubeProxyConfiguration
metricsBindAddress: ""
mode: "ipvs" # 填入`ipvs`
nodePortAddresses: null
最后再加入node節點就可以了
在此分享幾個學習的網站
Kubernetes教程 | Kuboard
最后驗證效果
查看ipvs

查看node

查看pod

ping node上部署的nginx podip

任意節點訪問service nodePort暴露的nginx埠都可以訪問成功
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/385541.html
標籤:其他
上一篇:xlddz(一):雜談專案由來
下一篇:學習Osharp及解決問題【一】
