CentOS-7.Xはyumを介してk8sクラスターをインストールします

CentOS-7.Xはyumを介してk8sクラスターをインストールします

VmWare16proはCentOS-7.9をインストールします

公式ウェブサイトからCentOS-7.9イメージISOをダウンロードします

インストールを最小限に抑える

仮想マシン編集ネットワーク

VMNet8を選択し、NATモードのサブネットIPを10.0.0.0に設定し、サブネットマスクを255.255.255.0に設定します。

NAT設定では、ゲートウェイアドレスは10.0.0.254に設定されます

ホストVMnet8アドレスは10.0.0.1であり、ホップは自動的に10に調整されます。

CentOS-7.Xテンプレートマシンをインストールします

テンプレートマシンネットワークを設定する

テンプレートマシンのIPアドレスは10.0.0.10に設定されています

vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.0.10
GATEWAY=10.0.0.254
NETMASK=255.255.255.0
DNS1=10.0.0.254

NetworkManagerを閉じる(重要)

systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl restart network
#保证能ping通baidu.com

ホスト名を設定する

vi /etc/hostname      
CentOS7.9
#或者用下面命令
hostnamectl set-hostname CentOS7.9
#设置完可以hostname查看主机名

一般的なコマンドをインストールする

yum install -y wget net-tools telnet tree nmap sysstat lrzsz dos2unix bind-utils vim less
yum -y install bash-completion
yum -y install epel-release
yum -y install yum-plugin-fastestmirror
source /etc/profile.d/bash_completion.sh

AlibabaCloudのソースを切り替えます

mkdir -p /etc/yum.repos.d/back/
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

ファイアウォールをオフにします

systemctl stop firewalld
systemctl disable firewalld
yum -y install iptables-services
systemctl start iptables 
systemctl enable iptables 
iptables -F
service iptables save

selinuxを閉じる

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
#其实就是找到swap那一行,在开头加#

タイムゾーンを調整する

# 设置系统时区为中国/上海 
timedatectl set-timezone Asia/Shanghai
# 将当前的UTC时间写入硬件时钟 
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务 
systemctl restart rsyslog 
systemctl restart crond

システムが必要としないサービスをオフにする

systemctl stop postfix 
systemctl disable postfix

システムのデフォルトログを設定しますsystemdjournald(元々はrsyslogd)

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
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
# 最大占用空间10G
SystemMaxUse=10G
# 单日志文件最大200M
SystemMaxFileSize=200M
# 日志保存时间2周
MaxRetentionSec=2week
# 不将日志转发到syslog
ForwardToSyslog=no
EOF
systemctl restart systemd-journald

システムカーネルをアップグレードする

 rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
 yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
 yum --enablerepo=elrepo-kernel install kernel-ml
 awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
 cat /etc/grub2.cfg
 grub2-set-default 0
 awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
#默认升到了5.11
reboot

k8sパラメータを設定します(yumを介したインストールには必要ないようです)

vi /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
#net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 #禁止使用swap空间,只有当系统OOM时才允许使用它
vm.overcommit_memory=1 #不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720

#刷新配置
sysctl -p /etc/sysctl.d/kubernetes.conf
#出现报错  sysctl: cannot stat /proc/sys/net/netfilter/nf_conntrack_max: No such file or directory
lsmod |grep conntrack
modprobe ip_conntrack
lsmod |grep conntrack
sysctl -p /etc/sysctl.d/kubernetes.conf

k8sクラスターを作成する

k8sクラスターは、マスターノードとノードノードに分割されます。この場合、マスターノードはマスターとノードの両方として機能します。インストールされるサービスは次のとおりです。

主人

  • etcd
  • api-server
  • コントローラーマネージャー
  • スケジューラー
  • kubelet
  • kube-proxy
  • docker(kubeletをインストールすると自動的にインストールされます)

ノード

  • kubelet
  • kube-proxy
  • docker(kubeletをインストールすると自動的にインストールされます)

クローンコピー

新しく構成したマシンをテンプレートマシンとして使用して、3つのクローンコピーを作成します。スペースを節約するために、ここでリンククローンを作成することを選択します。

クローン作成後の3台のマシンは次のとおりです。

  • マスター-10.0.0.11
  • node01-10.0.0.21
  • node02-10.0.0.22

3台のマシンのIPアドレスを個別に変更する

vi /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=10.0.0.11
IPADDR=10.0.0.21
IPADDR=10.0.0.22

3台のマシンのホスト名を個別に変更する

hostnamectl set-hostname master
hostnamectl set-hostname node01
hostnamectl set-hostname node02

マスターマシンのhostsファイルを変更します

vi /etc/hosts
10.0.0.11 master
10.0.0.21 node01
10.0.0.22 node02

マスターマシンのhostsファイルをノードノードに転送します

scp -rp /etc/hosts 10.0.0.21:/etc/hosts
scp -rp /etc/hosts 10.0.0.22:/etc/hosts
#第一次使用scp命令,需要输入密码

マスターノードと2ノードノードを構築する

etcdサービスをインストールする

#只需要在master节点装
yum install etcd -y
#修改etcd配置
vi /etc/etcd/etcd.conf
#搜索=左侧的key,修改成以下内容
#etcd没有配置集群,只修改以下2行即可
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
#启动etcd且设置开机自启
systemctl start etcd
systemctl enable etcd
netstat -lntup

kubernetes-masterをインストールします

yum -y install kubernetes-master
#配置apiserver
vi /etc/kubernetes/apiserver
#搜索=左侧的key,修改成以下内容
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://10.0.0.11:2379"

#配置controller-manager和scheduler kubelet和kube-proxy共用该配置文件
vi /etc/kubernetes/config
KUBE_MASTER="--master=http://10.0.0.11:8080"

サービス開始

systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service
systemctl enable kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl enable kube-scheduler.service
kubectl get componentstatus

マスターノードと2ノードノードにkubernetes-nodeをインストールします

yum install kubernetes-node -y
#kubernetes-node依赖docker,所以会自动安装docker
#master节点修改kubelet配置
vi /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=10.0.0.11"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=master"
KUBELET_API_SERVER="--api-servers=http://10.0.0.11:8080"
#启动master节点的kubelet
systemctl start kubelet.service
systemctl enable kubelet.service
systemctl start kube-proxy.service
systemctl enable kube-proxy.service

kubectl get nodes
#配置两个node节点
vi /etc/kubernetes/config
KUBE_MASTER="--master=http://10.0.0.11:8080"
#配置node01节点
vi /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=10.0.0.21"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=node01"
KUBELET_API_SERVER="--api-servers=http://10.0.0.11:8080"
#配置node02节点
vi /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=10.0.0.22"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=node02"
KUBELET_API_SERVER="--api-servers=http://10.0.0.11:8080"
#启动2个node节点的kubelet
systemctl start kubelet.service
systemctl enable kubelet.service
systemctl start kube-proxy.service
systemctl enable kube-proxy.service

フランネルネットワークを構成する

#所有节点安装flannel
yum install flannel -y
vi /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://10.0.0.11:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
#master设置etcd配置
etcdctl set /atomic.io/network/config '{"Network":"172.16.0.0/16"}'
#所有节点启动flannel
systemctl start flanneld.service
systemctl enable flanneld.service
systemctl restart docker

DockerAlibabaCloudイメージアクセラレーションを設定する

#先保证docker本身没有问题,pull镜像以及运行容器都是ok的,后面k8s运行容器有问题,会比较好排查
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://zhjxhme4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

テスト

docker pull busybox
docker run -it busybox
ip addr
#互相ping端口,由于一开始就把iptables规则都清空了,所以直接就能ping通

おすすめ

転載: blog.csdn.net/l229568441/article/details/113926480