이 기사는 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이 대규모 구조 조정을 발표한 이유는 매우 훈훈합니다.