kubeadm 연습 설치가 1.15는 Kubernetes

원래 주소 참조 GitHub의

우선, (모든 장치에서 수행) 환경을 준비

세 centos7.5 서버, 네트워크 사용 옥양목.

IP 주소 노드 역할 CPU 기억 호스트 이름
10.0.1.45 석사 2C 4G K8S 마스터
10.0.1.20 마디 2C 4G 노드 1
10.0.1.18 마디 2C 4G 노드 2
  1. 호스트 이름 호스트 이름을 설정합니다.
hostnamectl set-hostname k8s-master

호스트 이름, 노드 1과 노드 2의 공감 위의 표에 해당.

  1. 호스트 파일 편집 장치의 3 개 세트는 도메인 이름 확인을 추가합니다.
cat <<EOF >>/etc/hosts
10.0.1.45 k8s-master
10.0.1.20 node1
10.0.1.18 node2
EOF
  1. 방화벽, SELinux가 스왑을 해제
systemctl stop firewalld

systemctl disable firewalld

SELinux를 사용 안 함 :

setenforce 0

vim /etc/selinux/config
SELINUX=disabled

닫기 스왑

swapoff -a

sed -i 's/.*swap.*/#&/' /etc/fstab
  1. 커널 구성 매개 변수는 IPv4 트래픽은 브리지 체인의 iptables에 전달됩니다
cat > /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
EOF

sysctl --system
  1. KUBE-프록시 개방 IPVS.
    IPVS 이후로 커널의 트렁크에 추가되었습니다, 그래서 개방 IPVS는 KUBE-프록시 전제는 커널 모듈을로드 할 필요가 있습니다 :
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4

/Etc/sysconfig/modules/ipvs.modules 파일 생성, 노드 다시 시작 자동으로 필요한 모듈을로드 있는지 확인합니다. 필요한 커널 모듈이 올바르게 장착되었는지 여부를 확인하기 위해 그렙 -e ip_vs -e nf_conntrack_ipv4 명령 | lsmod를 사용합니다.

cat > /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_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  1. 설치 고정 표시기

는 Kubernetes 1.15 현재 지원되는 버전의 목록은 1.13.1 고정 표시기, 17.03, 17.06, 17.09, 18.06, 18.09이다. 여기 18.09.7 각 노드에서 버전 고정 표시기를 설치합니다.

yum install -y yum-utils   device-mapper-persistent-data   lvm2 &&\
yum-config-manager --add-repo    https://download.docker.com/linux/centos/docker-ce.repo &&\
yum install docker-ce-18.09.7-3.el7 -y
  1. systemd에 고정 표시기의 cgroup에 드라이버를 수정

문서에 따르면 CRI 설치 내용, cgroup에 드라이버 고정 표시기로 systemd 사용하여 Linux에서 릴리스 초기화 시스템으로 systemd 사용하기 위해, 그래서 여기에 서버 노드가 꽉 자원 상황에서 더 안정적인지 확인 각 노드 고정 표시기가에 cgroup에 드라이버를 수정할 수 있습니다 systemd.

vim /etc/docker/daemon.json

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

#重启docker
systemctl restart docker

#验证
docker info | grep Cgroup
Cgroup Driver: systemd
  1. 설치 도구는 Kubernetes

냠 국내 소스를 구성

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 소스 구성

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

설치 kubeadm, kubelet, kubectl

yum install -y kubeadm kubelet kubectl

systemctl enable kubelet

두, K8S 마스터 노드 구성

1. kubeadm 클러스터 초기화는 Kubernetes

kubeadm init --kubernetes-version=1.15.0 \

--apiserver-advertise-address=10.0.1.45 \

--image-repository registry.aliyuncs.com/google_containers \

--pod-network-cidr=10.244.0.0/16

정의 :

--apiserver-advertise-address=10.0.1.45
#定义api server地址就是master本机IP地址。

--image-repository registry.aliyuncs.com/google_containers
#由于kubeadm默认从官网k8s.grc.io下载镜像,以防网络原因,改为阿里云镜像仓库地址。

--pod-network-cidr=10.244.0.0/16
#定义POD网段为: 10.244.0.0/16。

클러스터 초기화 성공적인 반환 다음 정보 :

join 10.0.1.45:6443 --token bybzi7.7201j7f7mtiwtmg4 \

--discovery-token-ca-cert-hash sha256:9186c9b0709af151079bcb034f1771f10f382341bfb45024e5d0c541a055f2eb
  1. 구성 도구 kubectl
mkdir -p ~/.kube

cp /etc/kubernetes/admin.conf ~/.kube/config

#查看集群状态,确认所有组件都处于healthy状态
kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"}

클러스터를 초기화 문제가 발생하면 (주의)를 청소하려면 다음 명령을 사용할 수 있습니다 :

kubeadm reset
  1. 설치 옥양목 v3.8 네트워크 서비스
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml

#由于默认的 calico.yaml 的 Pod 网段为192.168.0.0/16,打开 calico.yaml 文件找到这行改为10.244.0.0/16。
vim calico.yaml

- name: CALICO_IPV4POOL_CIDR
  value: "10.244.0.0/16"

kubectl apply -f ./calico.yaml

#查看创建情况,等待每个 pod 的 STATUS 变为 Running。
watch kubectl get pods --all-namespaces
NAMESPACE    NAME                                       READY  STATUS   RESTARTS  AGE
kube-system  calico-kube-controllers-6ff88bf6d4-tgtzb   1/1    Running  0         2m45s
kube-system  calico-node-24h85                          1/1    Running  0         2m43s
kube-system  coredns-846jhw23g9-9af73                   1/1    Running  0         4m5s
kube-system  coredns-846jhw23g9-hmswk                   1/1    Running  0         4m5s
kube-system  etcd-jbaker-1                              1/1    Running  0         6m22s
kube-system  kube-apiserver-jbaker-1                    1/1    Running  0         6m12s
kube-system  kube-controller-manager-jbaker-1           1/1    Running  0         6m16s
kube-system  kube-proxy-8fzp2                           1/1    Running  0         5m16s
kube-system  kube-scheduler-jbaker-1                    1/1    Running  0         5m41s

4 개 설정 환경 변수

cat   > ~/.bash_profile << EOF
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF

세 개의 노드 노드 구성 (모든 노드에서 노드 작업)

노드 노드 추가 모든 노드 클러스터 노드는 Kubernetes에 가입하도록 다음 명령을 실행합니다.

kubeadm join 10.0.1.45:6443 --token bybzi7.7201j7f7mtiwtmg4    \
 --discovery-token-ca-cert-hash sha256:9186c9b0709af151079bcb034f1771f10f382341bfb45024e5d0c541a055f2eb

성공 후, 명령 K8S 마스터 클러스터의 상태를 확인 입력합니다.

kubectl get nodes
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   36m     v1.15.0
node1        Ready    <none>   3m10h   v1.15.0
node2        Ready    <none>   3m      v1.15.0

넷째, 대시 보드의 배치 (상에서 동작 K8S 마스터)

  1. YAML 파일은 대시 보드를 다운로드합니다.
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

#修改 yaml 文件中使用的源镜像。
sed -i 's/k8s.gcr.io/loveone/g' kubernetes-dashboard.yaml
#使用 NodePort 模式映射 30001 至 k8s 所有宿主机的 30001 端口上。
sed -i '/targetPort:/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' kubernetes-dashboard.yaml
  1. 대시 보드를 배포합니다.
kubectl apply -f kubernetes-dashboard.yaml
  1. 생성되면, 관련 서비스가 실행 확인.
kubectl get deployment kubernetes-dashboard -n kube-system
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-dashboard   1/1     1            1           3m

kubectl get services -n kube-system
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   40m
kubernetes-dashboard   NodePort    10.99.190.175   <none>        443:30001/TCP            4m
  1. 파이어 폭스 브라우저 대시 보드 액세스 주소 입력 : https://10.0.1.45:30001를
    참고 : 인해 인증 이유 Dashborad, 구글과 IE 브라우저가 열려 있지, 파이어 폭스 브라우저를 사용할 수 있습니다.

  2. 대시 보드보기 액세스 인증 토큰.
kubectl create serviceaccount  dashboard-admin -n kube-system
kubectl create clusterrolebinding  dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
  1. 토큰 로그인 대시 보드의 출력을 사용.

다섯 만들기

1 포드를 만들 명령을 사용하여

[root@k8s-master mainfests]# kubectl run nginx-deploy --image=nginx:1.14 --port=80 --replicas=3

[root@k8s-master mainfests]# kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
nginx-deploy-bc9ff65dd-6kvfg   1/1     Running   0          16h
nginx-deploy-bc9ff65dd-ffcl5   1/1     Running   0          16h
nginx-deploy-bc9ff65dd-pvjzt   1/1     Running   0          17h

포드를 만들 YAML이 사용

[root@k8s-master mainfests]# cat pod-demo.yml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  namespace: default
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: nginx:1.14
  - name: busybox
    image: busybox:latest
    command:
    - "bin/sh"
    - "-c"
    - "sleep 3600"

[root@k8s-master mainfests]# kubectl  create -f pod-demo.yml

추천

출처www.cnblogs.com/boy215/p/11276010.html