Kubernetes環境のセットアップ-CentOS

周囲###

3つのCentOS7.4サーバー: kube1、 kube2、 kube3、構成:2コア16G

ファイアウォールをオフにして無効にします。

systemctl stop firewalld

systemctl disable firewalld

SELINUXを無効にします。

setenforce 0

/ etc / sysctl.d / k8s.confファイルを作成し、次のコンテンツを追加します。

net.bridge.bridge-nf-call-ip6tables =1
net.bridge.bridge-nf-call-iptables =1
net.ipv4.ip_forward =1

次のコマンドを実行して、変更を有効にします。

modprobe br_netfilter

sysctl -p /etc/sysctl.d/k8s.conf

Docker ###をインストールします

# step 1:いくつかの必要なシステムツールをインストールします
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# Step 2:ソフトウェアソース情報を追加する
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3:Dockerを更新してインストールする-CE
sudo yum makecache fast
sudo yum -y install docker-ce

# Step 4:Dockerサービスを開始します
sudo service docker start

# Step 5:起動を設定する
sudo systemctl enable docker

アリババクラウドイメージアクセラレータを構成します。

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors":["https://obww7jh1.mirror.aliyuncs.com"]}
EOF

systemctl daemon-reload

systemctl restart docker

プルに必要なミラー(マスターノード kube1)

export image=pause-amd64:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}export image=kube-apiserver-amd64:v1.10.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}export image=kube-scheduler-amd64:v1.10.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}export image=kube-controller-manager-amd64:v1.10.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}export image=kube-proxy-amd64:v1.10.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}export image=k8s-dns-kube-dns-amd64:1.14.8
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}export image=k8s-dns-dnsmasq-nanny-amd64:1.14.8
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}export image=k8s-dns-sidecar-amd64:1.14.8
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}export image=etcd-amd64:3.1.12
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}

**ノードノード kube2 / kube3 **

export image=pause-amd64:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/anoy/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/anoy/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/anoy/${image}export image=kube-proxy-amd64:v1.10.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${image}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${image}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${image}

kubeletをインストールしますkubeadmkubectl

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

yum install -y kubelet kubeadm kubectl

systemctl enable kubelet && systemctl start kubelet

kubeletを構成する

インストールが完了したら、kubeletも構成する必要があります。これは、yumソースによってインストールされたkubeletによって生成された構成ファイルのパラメーターが --cgroup-driverから systemdに変更され、dockerの cgroup-driverがcgroupfs、2つは同じでなければなりません。dockerinfoコマンドで表示できます。

$ docker info | grep Cgroup
Cgroup Driver: cgroupfs

kubelet構成ファイル / etc / systemd / system / kubelet.service.d / 10-kubeadm.confを変更し、 KUBELET_CGROUP_ARGSパラメーターを cgroupfsに変更します。

Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"

スワップパーティションについて別の質問があります。Kubernetesでは、システムのスワップを1.8以降シャットダウンする必要があります。シャットダウンしないと、kubeletのデフォルト構成は開始されません。

swapoff -a

変更が完了したら、構成ファイルをリロードします。

systemctl daemon-reload

Kubernetesクラスターを構築する###

**1、 マスターノード kube1 **を初期化します

kubeadm init --pod-network-cidr=10.244.0.0/16--apiserver-advertise-address=172.17.58.201--kubernetes-version=v1.10.4

出力ログ:

.....[ addons] Applied essential addon: kube-dns
[ addons] Applied essential addon: kube-proxy

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml"with one of the options listed at:
 https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

 kubeadm join 172.17.58.201:6443--token 831rfg.dw0vyb1h3beab5as --discovery-token-ca-cert-hash sha256:623681fde5b2bf564a8631942f31797f9bef75f40b14a86ef75e1d31b43709f1

ログから、クラスターを使用するには、次のコマンドを実行する必要があることがわかります。

 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

また、ポッドネットワークをクラスターにデプロイする必要があります。ここで、「フランネル」を選択します。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml

この時点で、マスターノードが初期化されます。クラスター関連の情報を確認してください。

# クラスタ情報を表示する
$ kubectl cluster-info
Kubernetes master is running at https://172.17.58.201:6443
KubeDNS is running at https://172.17.58.201:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
# ノード情報を表示する
$ kubectl get nodes
NAME           STATUS    ROLES     AGE       VERSION
lab-backend1   Ready     master    1m        v1.10.4
# ポッド情報を表示する
$ kubectl get pods --all-namespaces
NAMESPACE     NAME                                   READY     STATUS    RESTARTS   AGE
kube-system   etcd-lab-backend1                      1/1       Running   0          2m
kube-system   kube-apiserver-lab-backend1            1/1       Running   0          1m
kube-system   kube-controller-manager-lab-backend1   1/1       Running   0          2m
kube-system   kube-dns-86f4d74b45-zbnz6              3/3       Running   0          3m
kube-system   kube-flannel-ds-n67zn                  1/1       Running   0          1m
kube-system   kube-proxy-qdmqq                       1/1       Running   0          3m
kube-system   kube-scheduler-lab-backend1            1/1       Running   0          2m

初期化プロセスに問題がある場合は、次のコマンドを使用してリセットします。

kubeadm reset

rm -rf /var/lib/cni/

rm -f $HOME/.kube/config

2、 ワーカーノードを追加

方法①kubeadminitを使用したときに返される情報は、クラスター kube2 / kube3に参加します

kubeadm join 172.17.58.201:6443--token 831rfg.dw0vyb1h3beab5as --discovery-token-ca-cert-hash sha256:623681fde5b2bf564a8631942f31797f9bef75f40b14a86ef75e1d31b43709f1

方法②トークン kube1を再生成する

kubeadm token generate

kubeadm token create <generated-token>--print-join-command --ttl=24h

クラスター kube2 / kube3に参加する

kubeadm join 172.17.58.201:6443--token 41ts3r.n2vw06xbniouo6u5 --discovery-token-ca-cert-hash sha256:f958e234e8554c2352127f356a7eb7dad422c10df9a749156df36e5972cba38b

クラスターノード kube1をもう一度見てください

$ kubectl get nodes
NAME           STATUS    ROLES     AGE       VERSION
lab-backend1   Ready     master    6m        v1.10.4
lab-backend2   Ready     <none>    56s       v1.10.3
lab-backend3   Ready     <none>    14s       v1.10.3

この時点で、1マスター+2ワーカーのkubernetesクラスターが正常に作成されています。

Recommended Posts

Kubernetes環境のセットアップ-CentOS