Kubernetes 1.29.4 버전 클러스터의 openEuler 배포에 대한 실제 데모

이 기사는 Jiang Wanzhengchouyu가 Huawei Cloud 커뮤니티 " OpenEuler에서 Kubernetes 1.29.4 버전 클러스터 배포 "에서 공유한 것입니다.

1. Kubernetes 클러스터 노드 준비

1.1 호스트 운영 체제 설명

일련번호 운영 체제 및 버전 설명
1 CentOS7u9 또는 OpenEuler2203

1.2 호스트 하드웨어 구성 설명

요구 사항 CPU 메모리 하드 디스크 역할 호스트 이름
값 8C 8G 1024GB 마스터 k8s-master01
값 8C 16G 1024GB 작업자(노드) k8s-worker01
값 8C 16G 1024GB 작업자(노드) k8s-worker02

1.3 호스트 구성

1.3.1 호스트 이름 구성

이번에는 세 개의 호스트가 kubernetes 클러스터 배포를 완료하는 데 사용되므로 그 중 하나는 k8s-master01이라는 마스터 노드이고, 그 중 두 개는 k8s-worker01 및 k8s-worker02라는 작업자 노드입니다.

# 마스터 노드

호스트 이름ctl 세트-호스트 이름 k8s-master01

#worker01node
호스트 이름ctl 세트-호스트 이름 k8s-worker01
 
#worker02node
호스트 이름ctl 세트-호스트 이름 k8s-worker02

1.3.2 IP 주소, 이름 확인 및 상호 신뢰

#IP 구성은 여기서 설명하지 않습니다.

#다음은 이름 확인 구성입니다.
[root@k8s-master01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 로컬호스트 localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.11 k8s-master01
192.168.0.12 k8s-worker01
192.168.0.13 k8s-worker02

#호스트 상호 신뢰 구성  
[root@k8s-master01 ~]# ssh-keygen
공개/개인 RSA 키 쌍을 생성하는 중입니다.
키를 저장할 파일을 입력하세요(/root/.ssh/id_rsa):
암호를 입력하세요(암호가 없으면 비워두세요):
동일한 암호를 다시 입력하세요.
귀하의 신분증은 /root/.ssh/id_rsa에 저장되었습니다.
공개 키가 /root/.ssh/id_rsa.pub에 저장되었습니다.
키 지문은 다음과 같습니다.
SHA256:Rr6W4rdnY350fzMeszeWFR/jUJt0VOZ3yZECp5VJJQA root@k8s-master01
키의 Randomart 이미지는 다음과 같습니다.
+---[RSA 3072]----+
| E.o+=++*|
| ++o*+|
| . . +oB|
| 오. *오|
| 그래서 =|
| . 오. ..o|
| . + . . +o|
| . 영형. = . *비|
| ...*.또는 예*|
+----[SHA256]-----+
[root@k8s-master01 ~]# for i in {11..13};do ssh-copy-id 192.168.0.${i};done

/usr/bin/ssh-copy-id: 정보: 설치할 키 소스: "/root/.ssh/id_rsa.pub"
호스트 '192.168.0.11 (192.168.0.11)'의 신뢰성을 설정할 수 없습니다.
ED25519 키 지문은 SHA256:s2R582xDIla4wyNozHa/HEmRR7LOU4WAciEcAw57U/Q입니다.
이 키는 다른 이름으로 알려져 있지 않습니다.
계속 연결하시겠습니까(예/아니요/[지문])? 예
/usr/bin/ssh-copy-id: INFO: 이미 설치된 키를 필터링하기 위해 새 키로 로그인을 시도하고 있습니다.
/usr/bin/ssh-copy-id: INFO: 설치할 키 1개가 남아 있습니다. -- 지금 메시지가 표시되면 새 키를 설치하라는 메시지가 표시됩니다.

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
[email protected]의 비밀번호:

추가된 키 수: 1

1.3.4 방화벽 구성

모든 호스트에는 작업이 필요합니다.

기존 방화벽 방화벽 끄기

# systemctl 방화벽 비활성화

# systemctl 방화벽 중지

또는

systemctl 비활성화 --이제 방화벽

방화벽 상태 보기

# 방화벽-cmd --state

실행되지 않음

참조 실행 명령:

[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'systemctl 비활성화 --now Firewalld' ;done

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'firewall-cmd --state' ;done

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
실행되지 않음

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
실행되지 않음

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
실행되지 않음

1.3.5 SELINUX 구성

모든 호스트에는 작업이 필요합니다. SELinux 구성을 수정하려면 운영 체제를 다시 시작해야 합니다.

# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 상태

참조 실행 명령:

[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/ 구성' ;완료

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
 
[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'sestatus' ;done

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
SELinux 상태: 비활성화됨

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
SELinux 상태: 비활성화됨

승인된 사용자만 가능합니다. 모든 활동은 모니터링되고 보고될 수 있습니다.
SELinux 상태: 비활성화됨

1.3.6 시간 동기화 구성

모든 호스트에는 작업이 필요합니다. 최소 설치 시스템에는 ntpdate 소프트웨어 설치가 필요합니다.

# crontab -l

0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com
for i in {11..13};do ssh 192.168.0.${i} ' echo '0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com' >> /etc/crontab' ; 완료
#상하이 시간대, 동8구 설정

timedatectl set-timezone 아시아/상하이

for i in {11..13};do ssh 192.168.0.${i} ' timedatectl set-timezone Asia/Shanghai' ;done

1.3.7 운영 체제 커널 업그레이드

Centos 시스템은 콘텐츠를 업그레이드해야 합니다. 특히 Baidu 및 OpenEuler2203은 업그레이드할 필요가 없습니다.

1.3.8 커널 라우팅 전달 및 브리지 필터링 구성

모든 호스트에는 작업이 필요합니다.

브리지 필터링 및 커널 전달 구성 파일 추가

sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
# 고양이 > /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
VM.swappiness = 0
EOF
#br_netfilter 모듈 구성 및 로드

고양이 <<EOF | sudo 티 /etc/modules-load.d/k8s.conf
씌우다
br_netfilter
EOF

#br_netfilter 오버레이 모듈 로드
모드프로브 br_netfilter
모드프로브 오버레이
#로드되었는지 확인

# lsmod | grep br_netfilter

br_netfilter 22256 0
브리지 151336 1 br_netfilter

#효과적으로만들자

 sysctl --시스템

# 기본 구성 파일을 사용하여 적용합니다.
sysctl -p

# 새로 추가된 구성 파일을 사용하여 적용합니다.
sysctl -p /etc/sysctl.d/k8s.conf

1.3.9 ipset 및 ipvsadm 설치

모든 호스트에는 작업이 필요합니다.

ipset 및 ipvsadm 설치

# yum -y 설치 ipset ipvsadm
ipvsadm 모듈 로딩 방법 구성
로드해야 할 모듈 추가

# 고양이 > /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
EOF
 
승인, 실행, 로드되었는지 확인
chmod 755 /etc/sysconfig/modules/ipvs.module && /etc/sysconfig/modules/ipvs.module

해당 모듈이 성공적으로 로드되었는지 확인
# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

1.3.10 SWAP 파티션 닫기

수정이 완료된 후 운영 체제를 다시 시작해야 합니다. 다시 시작하지 않으면 swapoff -a 명령을 사용하여 일시적으로 종료할 수 있습니다.

스왑 파티션을 영구적으로 닫고 운영 체제를 다시 시작해야 합니다.

# 고양이 /etc/fstab

......

# /dev/mapper/centos-swap 스왑 스왑 기본값 0 0

이전 줄의 시작 부분에 # 추가

2. 컨테이너 환경 설치

2.1 Containerd 환경 패키지 설치

모든 호스트에는 작업이 필요합니다.

#패킹된 파일

for i in {11..13};do ssh 192.168.0.${i} ' wget https://blog-source-mkt.oss-cn-chengdu.aliyuncs.com/resources/k8s/kubeadm%20init/ k8s1.29.tar.gz'; 완료

# 컨테이너의 압축을 풀고 설치합니다.
for i in {11..13};do ssh 192.168.0.${i} ' tar -zxvf /root/k8s1.29.tar.gz'; 완료

for i in {11..13};do ssh 192.168.0.${i} ' tar -zxvf /root/workdir/containerd-1.7.11-linux-amd64.tar.gz && mv /root/bin/* /usr/local/bin/ && rm -rf /root/bin'; 완료
# 서비스를 생성합니다. 모든 호스트가 작동해야 합니다.
고양이 << EOF > /usr/lib/systemd/system/containerd.service
[단위]
설명=containerd 컨테이너 런타임
문서=https://containerd.io
이후=network.target local-fs.target

[서비스]
ExecStartPre=-/sbin/modprobe 오버레이
ExecStart=/usr/local/bin/containerd

유형=알림
대리인=예
KillMode=프로세스
다시 시작=항상
재시작초=5

# 0이 아닌 Limit*를 사용하면 회계 오버헤드로 인해 성능 문제가 발생합니다.
# 커널에서. 컨테이너-로컬 계정을 수행하려면 cgroup을 사용하는 것이 좋습니다.
LimitNPROC=무한대
LimitCORE=무한대

# 시스템 버전이 지원하지 않는 경우 TasksMax에 댓글을 달아주세요.
# systemd 226 이상에서만 이 버전을 지원합니다.
작업최대=무한대
OOMScoreAdjust=-999

[설치하다]
WantedBy=다중 사용자.대상
EOF
# 컨테이너 서비스 시작
for i in {11..13};do ssh 192.168.0.${i} 'systemctl daemon-reload && systemctl 활성화 --now 컨테이너d '; 완료

# runc를 설치한다
for i in {11..13};do ssh 192.168.0.${i} 'install -m 755 /root/workdir/runc.amd64 /usr/local/sbin/runc '; 완료
#cni 플러그인 설치
for i in {11..13};do ssh 192.168.0.${i} 'mkdir -p /opt/cni/bin && tar -xzvf /root/workdir/cni-plugins-linux-amd64-v1.4.0 .tgz -C /opt/cni/bin/ '; 완료
# 컨테이너 구성 파일을 생성하고 수정합니다.
for i in {11..13};do ssh 192.168.0.${i} 'mkdir -p /etc/containerd && Containerd config default | sudo tee /etc/containerd/config.toml '; 완료
 
# 샌드박스 이미지를 수정합니다. 모든 호스트가 작동해야 합니다.

sed -i 's#sandbox_image = "registry.k8s.io/pause:.*"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#' /etc/containerd/config.toml
#컨테이너 다시 시작
systemctl 재시작 컨테이너d

2.2 마스터 호스트에 k8s 설치

# k8s v2.19 소스를 구성하고 모든 노드를 설치해야 합니다.
고양이 <<EOF | 티 /etc/yum.repos.d/kubernetes.repo
[쿠버네티스]
이름=쿠버네티스
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
활성화=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
EOF
#k8s 도구를 설치합니다. 모든 노드를 설치해야 합니다.
냠 모두 청소 && 냠 makecache

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# kubelet 구성 docker에서 사용하는 cgroupdriver와 kubelet에서 사용하는 cgroup 간의 일관성을 유지하려면 다음 파일 내용을 수정하는 것이 좋습니다. 모든 노드를 설치해야 합니다.

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

또는 다음 명령
echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"' > /etc/sysconfig/kubelet
systemctl kubelet 활성화

#참고, kubelet을 시작하지 마십시오. kubeadm이 자동으로 시작되면 설치 시 오류가 보고됩니다.

# k8s 명령을 설치하고 마스터 노드에서 실행합니다. 여기에는 1.29.4 버전 이미지만 있습니다.

kubeadm init --apiserver-advertise-address=192.168.0.11 --image-repository Registry.aliyuncs.com/google_containers --kubernetes-version v1.29.4 --service-cidr=10.96.0.0/12 --pod-network- 시드르=10.224.0.0/16
#마지막으로 다음 명령을 실행합니다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

KUBECONFIG=/etc/kubernetes/admin.conf 내보내기

2.3 Calico 네트워크 플러그인 설치

kubectl 적용 -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
#마지막으로 노드 및 포드 브랜치 상태 확인

kubectl은 노드를 얻습니다
 
kubectl get pods -A

 

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

Linus는 커널 개발자가 탭을 공백으로 대체하는 것을 막기 위해 스스로 노력했습니다. 그의 아버지는 코드를 작성할 수 있는 몇 안되는 리더 중 한 명이고, 둘째 아들은 오픈 소스 기술 부서의 책임자이며, 막내 아들은 오픈 소스 코어입니다. 기고자 Robin Li: 자연 언어 새로운 범용 프로그래밍 언어가 될 것입니다. 오픈 소스 모델은 Huawei에 비해 점점 더 뒤쳐질 것입니다 . 일반적으로 사용되는 5,000개의 모바일 애플리케이션을 Hongmeng으로 완전히 마이그레이션하는 데 1년이 걸릴 것입니다. 타사 취약점. 기능, 안정성 및 개발자의 경험이 크게 개선된 Quill 2.0 출시되었습니다. Ma Huateng과 Zhou Hongyi는 "원한을 제거하기 위해" 공식적으로 출시되었습니다. Laoxiangji의 소스는 코드가 아닙니다. Google이 대규모 구조 조정을 발표한 이유는 매우 훈훈합니다.
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11053977