Kubernetes 클 러 스 터 설정 사용 가능

11298 단어 쿠 베 넷 스
고가 용 원리
kubelet 의 config 매개 변 수 는 특정 디 렉 터 리 에 있 는 Yml 파일 을 모니터링 하여 지정 한 디 렉 터 리 에 있 는 pod 가 안정 적 으로 실 행 될 수 있 도록 합 니 다. 디 렉 터 리 에 apiserver, controller - manager, scheduler 에 대응 하 는 Yml 설명 파일 을 만 들 수 있 습 니 다. kubelet 을 시작 하여 세 사람의 안정 적 인 운행 을 확보 할 수 있 습 니 다.api - server 는 nginx 를 사용 하여 부하 균형 과 건강 상태 감 측 을 할 수 있 습 니 다. controller - manager, scheduler 는 시작 할 때 설정 – leader - elect = true 를 통 해 선 거 를 실시 하여 같은 시간 에 호스트 한 대 만 작 동 하도록 확보 하고 고장 이 났 을 때 standby 는 master 로 전환 합 니 다.
공식 적 으로 master - standby - standby 를 추천 합 니 다.
kbelet 의 높 은 사용 가능: systemctl 설정 Restart = on - failure 로 이 루어 집 니 다. Restart 필드: kbelet 종료 후 Systemd 의 재 부팅 방식 을 정의 합 니 다.위의 예 에서 Restart 는 on - failure 로 설정 되 어 의외 의 실 패 를 표시 하면 kubelet 을 다시 시작 합 니 다.kubelet 이 정상적으로 멈 추 면 (예 를 들 어 systemctl stop 명령 을 실행) 다시 시작 하지 않 습 니 다.
Restart 필드 에서 설정 할 수 있 는 값 은 다음 과 같 습 니 다. -no (기본 값): 종료 후 다시 시작 하지 않 습 니 다 - on - success: 정상 적 인 종료 시 (종료 상태 코드 0) 만 다시 시작 합 니 다 - on - failure: 비정 상 종료 시 (종료 상태 코드 0 이 아 님), 신호 종료 와 시간 초 과 를 포함 하여 다시 시작 합 니 다 - on - abnormal: 신호 종료 와 시간 초과 만 있 습 니 다.다시 시작 합 니 다 - on - abort: 포착 되 지 않 은 신호 가 종 료 될 때 만 다시 시작 합 니 다 - on - watchdog: 시간 초과 종료 되 어야 다시 시작 합 니 다 - always: 어떤 종료 원인 이 든 항상 다시 시작 합 니 다.
apiserver 전단 nginx 높 은 사용 가능: keepalive + nginx 더 이상 군말 하지 않 습 니 다.
집단 형식
노드 정보
호스트 IP
운영 체제
172.20.1.99
centos7.2
172.20.1.100
centos7.2
172.20.1.101
centos7.2
설정 프로 세 스 (kubelet. sh 로 직접 저장 가능)
#config    
cat > /etc/kubernetes/config <"--logtostderr=true"

KUBE_LOG_LEVEL="--v=0"

KUBE_ALLOW_PRIV="--allow-privileged=false"

KUBE_MASTER=""
EOF
#kubelet    
cat > /etc/kubernetes/kubelet <"--address=127.0.0.1"

KUBELET_HOSTNAME="--hostname-override=172.20.1.101"

KUBELET_API_SERVER=""

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=172.20.1.128:5000/pause"

KUBELET_ARGS="--config=/etc/kubernetes/manifests --register-node=false"
EOF

#    

echo "
[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service

[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet \
        \$KUBE_LOGTOSTDERR \
        \$KUBE_LOG_LEVEL \
        \$KUBELET_API_SERVER \
        \$KUBELET_ADDRESS \
        \$KUBELET_PORT \
        \$KUBELET_HOSTNAME \
        \$KUBE_ALLOW_PRIV \
        \$KUBELET_POD_INFRA_CONTAINER \
        \$KUBELET_ARGS
Restart=on-failure

[Install]
WantedBy=multi-user.target
" > /usr/lib/systemd/system/kubelet.service

#      
mkdir -p /var/lib/kubelet/pods
mkdir -p /var/lib/kubelet/plugins

#      
systemctl enable kubelet

#      
touch /var/log/kube-apiserver.log
touch /var/log/kube-controller-manager.log
touch /var/log/kube-scheduler.log

#      
mkdir -p /etc/kubernetes/manifests

#kube-apiserver.yaml
cat > /etc/kubernetes/manifests/kube-apiserver.yaml <name: kube-apiserver
spec:
  hostNetwork: true
  containers:
  - name: kube-apiserver
    image: 172.20.1.128:5000/kube-apiserver:v1.3.0
    command:
    - /bin/sh
    - -c
    - /usr/local/bin/kube-apiserver --address=172.20.1.101 --etcd-servers=http://172.20.1.103:2379,http://172.20.1.99:2379,http://172.20.1.102:2379,http://172.20.1.100:2379,http://172.20.1.101:2379
      --admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
      --v=2 --service-cluster-ip-range=10.254.0.0/16 
      --allow-privileged=False 1>>/var/log/kube-apiserver.log 2>&1
    ports:
    - containerPort: 8080
      hostPort: 8080
      name: local
    volumeMounts:
    - mountPath: /var/log/kube-apiserver.log
      name: logfile
  volumes:
  - hostPath:
      path: /var/log/kube-apiserver.log
    name: logfile
EOF

#kube-controller-manager
cat > /etc/kubernetes/manifests/kube-controller-manager.yaml <name: kube-controller-manager
spec:
  containers:
  - command:
    - /bin/sh
    - -c
    - /usr/local/bin/kube-controller-manager --master=172.20.1.101:8080 --cluster-name=local
      --cluster-cidr=10.254.0.0/16
      --v=2 --leader-elect=true 1>>/var/log/kube-controller-manager.log 2>&1
    image: 172.20.1.128:5000/kube-controller-manager:v1.3.0
    livenessProbe:
      httpGet:
        path: /healthz
        port: 10252
      initialDelaySeconds: 15
      timeoutSeconds: 1
    name: kube-controller-manager
    volumeMounts:
    - mountPath: /var/log/kube-controller-manager.log
      name: logfile
  hostNetwork: true
  volumes:
  - hostPath:
      path: /var/log/kube-controller-manager.log
    name: logfile
EOF


#kube-scheduler
cat > /etc/kubernetes/manifests/kube-scheduler.yaml <name: kube-scheduler
spec:
  hostNetwork: true
  containers:
  - name: kube-scheduler
    image: 172.20.1.128:5000/kube-scheduler:v1.3.0
    command:
    - /bin/sh
    - -c
    - /usr/local/bin/kube-scheduler --master=172.20.1.101:8080 --v=2 --leader-elect=true 1>>/var/log/kube-scheduler.log
      2>&1
    livenessProbe:
      httpGet:
        path: /healthz
        port: 10251
      initialDelaySeconds: 15
      timeoutSeconds: 1
    volumeMounts:
    - mountPath: /var/log/kube-scheduler.log
      name: logfile
  volumes:
  - hostPath:
      path: /var/log/kube-scheduler.log
    name: logfile
EOF
#  kueblet
systemctl start kubelet

nginx 프로필
upstream backend {
        ip_hash;
        server 172.20.1.99:8080  max_fails=1 fail_timeout=300s;
        server 172.20.1.100:8080 max_fails=1 fail_timeout=300s;
        server 172.20.1.101:8080 max_fails=1 fail_timeout=300s;
         }
    server {
        listen       0.0.0.0:8080;
        server_name  apiserver;
        location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
        proxy_pass http://backend;     
        }
    }

잘못 배열 하 다
  • tailf /var/log/kube-*.log
  • tailf /var/log/messages
  • docker logs id

  • 주의 사항
  • 다른 노드 에서 실행 하려 면 설정 파일 의 호스트 IP
  • 를 교체 해 야 합 니 다.
  • kubelet 복사 필요
  • 파일 $기 호 를 시작 하려 면 전의 가 필요 합 니 다
  • / etc / kubernetes 디 렉 터 리 에 남 은 파일 을 포함 하지 마 십시오
  • 스 크 립 트 의 미 러 를 교체 해 야 합 니 다. 여 기 는 자신 이 배치 한 개인 창고
  • 입 니 다.
    레 퍼 런 스
    Kubernetes - Building High-Availability Clusters http://kubernetes.io/docs/admin/high-availability/#establishing-a-redundant-reliable-data-storage-layer

    좋은 웹페이지 즐겨찾기