기사 디렉토리
머리말
kudeadm
Kubeadm은 도구이며 kubernetes 클러스터를 빠르게 생성하기위한이 두 명령과 kubeadm init
같은 kubeadm join
모범 사례를 제공 합니다.
kubernetes v1.17.0
K8s로 축약되는 kubernetes는 8 자 "ubernete"대신 8의 약어입니다. Kubernetes는 Google의 Borg 시스템에서 탄생 한 강력한 컨테이너 오케스트레이션 시스템입니다. 컨테이너 기술을 기반으로하는 분산 아키텍처를위한 새로운 선도 솔루션입니다. 그 목적은 리소스 관리의 자동화를 실현하고 여러 데이터 센터에서 리소스 활용도를 극대화하는 것입니다.이를 통해 개발 비용의 30 % 이상을 절약하고 나중에 운영 및 유지 관리 비용을 절감 할 수 있습니다. Kubernetes와 전체 생태계 (도구, 모듈, 플러그인) 등)은 Go 언어로 작성되었습니다.
참조 : https://cloud.tencent.com/developer/article/1512662
k8s 시스템을 빠르게 구축
시스템 요구 사항
- 최소 듀얼 코어
- RAM 최소 4G
- 서버 버전이 3.10 이상입니다.
설치 환경 초기화
-
시스템 코어 수를 확인하십시오. grep -c'processor '/ proc / cpuinfo
-
시스템 커널 버전을 확인하고 업그레이드가 필요한 경우 시스템 커널을 업그레이드하십시오.
# 查看系统版本 uname -r # 升级系统内核版本 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm # 查看当前可用版本 yum --disablerepo="*" --enablerepo="elrepo-kernel" list available # 安装最新版内核 yum --enablerepo=elrepo-kernel install kernel-ml -y # 设置grab2 sudo awk -F\' '$1=="menuentry " { print i++ " : " $2}' /etc/grub2.cfg sudo grub2-set-default 0 sudo grub2-mkconfig -o /boot/grub2/grub.cfg # 重启 reboot
-
서비스 이름 설정
# master 节点做下面操作 hostnamectl set-hostname master # node 节点做下面操作 hostnamectl set-hostname node1 | node2 ...
-
도메인 매핑 설정
# master 节点做下面操作 echo "${ip} master" >> /etc/hosts # node 节点做下面操作 echo "${ip} node1" >> /etc/hosts
-
방화벽, selinux 및 스왑 끄기
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config swapoff -a sed -i 's/.*swap.*/#&/' /etc/fstab
-
브리지 된 IPv4 트래픽을 iptables 체인으로 전달하도록 커널 매개 변수 구성
cp ./config/k8s.conf /etc/sysctl.d/ echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
-
국내 yum 소스 구성
yum install -y wget mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo yum clean all && yum makecache # 配置 kubernetes 源 cp ./config/kubernetes.repo /etc/yum.repos.d/ # 配置 docker 源 cp ./config/docker-ce.repo /etc/yum.repos.d/
노드 설치
Docker 설치
# 卸载已有的docker相关服务
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装依赖
sudo yum -y install yum-utils device-mapper-persistent-data lvm2
# 设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker-ce
sudo yum -y install docker-ce docker-ce-cli containerd.io
# 列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。
yum list docker-ce --showduplicates | sort -r
# 安装docker
sudo yum install -y docker-ce-19.03.5 docker-ce-cli-19.03.5 containerd.io
# 复制配置
mkdir -p /etc/docker
cp ./config/daemon.json /etc/docker
# 启动
sudo systemctl start docker
# 开机自启动
systemctl enable docker
kubeadm 및 kubelet 및 kubectl 노드 설치
# 这里指定一下版本号, k8s 差不多每隔 4个月迭代一次版本, 如果想安装最新的, 可执行这条指令: yum install -y kubelet kubeadm kubectl, 同时也要注意一下, dashboard 也要安装对应版本
yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
systemctl enable kubelet
마스터 노드 설치
-
클러스터 초기화
host_ip=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}'` kubeadm init --kubernetes-version=1.17.0 \ --apiserver-advertise-address=${host_ip} \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16
여기에 약간의 트릭이 있습니다. 마스터 노드 ip를 물리적 시스템 ip에 강하게 바인딩하지 않는 것이 가장 좋습니다. docker가 먼저 설치되므로 기본 ip 인 docker0 : 172.17.0.1을 사용할 수 있습니다. 나중에 클러스터 마이그레이션을 수행하는 경우 물리적 시스템 ip를 변경하기 만하면됩니다. 쪽으로
-
kubectl 도구 구성
# 不配置的话 kubectl 会没权限 mkdir -p /root/.kube cp /etc/kubernetes/admin.conf /root/.kube/config
-
플란넬 네트워크 배포
kubectl apply -f ./config/kube-flannel.yml
-
대시 보드 배포 (k8s 버전 1.17은 대시 보드 : v2.0.0-beta8에 해당, k8s 버전 1.16은 대시 보드 : v2.0.0-beta6에 해당)
-
네임 스페이스 만들기
kubectl create namespace kubernetes-dashboar
-
인증서 생성
host_ip=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F"/" '{print $1}'` mkdir $HOME/certs && cd $HOME/certs #生成证书 openssl genrsa -out tls.key 2048 openssl req -new -out tls.csr -key tls.key -subj '/CN=${host_ip}' openssl x509 -req -in tls.csr -signkey tls.key -out tls.crt kubectl create secret generic kubernetes-dashboard-certs --from-file=tls.key --from-file=tls.crt -n kubernetes-dashboard cd -
-
사용자 생성
kubectl create -f ./config/admin-dashboard1.yaml # 查看token admin_token=`kubectl get secrets -n kube-system | grep admin-user | awk '{print $1}'` kubectl describe secrets ${admin_token} -n kube-system
(컨테이너가 모두 준비된 후 잠시 기다려 https : // $ {host_ip} : 30001을 방문하여 토큰을 통해 인터페이스에 액세스)
-
기본 포트 번호 수정
k8s 기본 컨테이너 포트 번호 범위는 30000 ~ 32767입니다.
sed -i '24i\ \ \ \ \- --service-node-port-range=1-65535' /etc/kubernetes/manifests/kube-apiserver.yaml
노드 설치
# 到master节点, 输入一下指令,查看加入集群的指令
kubeadm token create --print-join-command
# 然后到 node 节点输入该集群指令
kubeadm join 192.168.9.51:6443 --token m2csqd.xn7p6u9sg6s9hrgv --discovery-token-ca-cert-hash sha256:3ce27a68518c46ee8ec2fb860328228092c4c60dc45c4859f74b98fd3439b1e9
모니터링 구성 요소 설치
Kubernetes는 metrics-server를 사용 하여 노드 및 포드 수준 리소스 모니터링 을 제공합니다. Kubernetes 버전 1.8부터는 Metrics API를 통해 CPU, 메모리 및 기타 리소스의 측정 항목 정보를 얻을 수 있습니다. Heapster는 더 이상 유지 관리되지 않으며 설치된 metrics-server 대신 metrics-server로 대체됩니다. -server pod 명령 및 자동 예약이 작동하지 않습니다.
-
코드 다운로드
git clone https://github.com/kubernetes-incubator/metrics-server
-
deploy/1.8+/metrics-server-deployment.yaml
파일 수정# 想要查看每一个 pod 所占用的 cpu 资源和 内存资源, 需要安装监控组件 # 修改两个地方, 一个是镜像地址改为: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6 # 第二个是添加参数 #- --logtostderr #- --kubelet-insecure-tls #- --kubelet-preferred-address-types=InternalIP # eg: containers: - name: metrics-server image: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6 imagePullPolicy: IfNotPresent args: - --cert-dir=/tmp - --secure-port=4443 - --logtostderr - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP
-
모니터링 구성 요소 설치
# metrics-server文件夹下, 有这五个文件: aggregated-metrics-reader.yaml,auth-delegator.yaml,auth-reader.yaml,metrics-apiservice.yaml,metrics-server-deployment.yaml,metrics-server-service.yaml,resource-reader.yaml kubectl create -f ./metrics-server
일반적인 설치 오류
-
시스템 커널 버전이 너무 낮기 때문에 설치가 비정상입니다.
-시스템 커널 버전 업그레이드
-
대시 보드는 로그인 후 많은 forbbien 오류를보고합니다.
– 대시 보드의 하위 버전과 함께 상위 버전의 k8s가 설치되어있을 수 있으며, 해결책은 k8s 버전에 해당하는 대시 보드를 설치하는 것입니다.
k8s 버전 대시 보드 버전 v1.17.0 대시 보드 : v2.0.0-beta8 v1.16.0 대시 보드 : v2.0.0-beta6