k8s-1.17.1クラスターデプロイメント-シングルマスター(2つ)

前回のk8s予備調査(1)の記事に続き、k8sを簡単に理解した後、この記事では主にks8クラスターのデプロイについて説明します。別のk8sエッセンスバージョンを参照することもできます。驚きがあります。

Centos7デプロイk8sクラスター:(単一のマスターノード)

k8sパッケージは、k8s-apiserver、k8s-scheduler、k8s-contrller-manager、kubelet、kube-proxyなどのサービスを提供します。これらのサービスはsystemdによって管理され、構成情報は/ etc / kubernetesの1つの場所に保存されます。
これらのサービスはさまざまなホストで実行でき、k8s-scheduler、k8s-spiserver、k8s-controller-managerはマスターで実行でき、kubelet、kube-proxy、dockerはノードで実行できます。

1.環境への準備:(マシンごとに実行)

システムバージョン:centos 7.7_1908

hostnamectl set-hostname test2    #Master
hostnamectl set-hostname test3    #Node1
hostnamectl set-hostname test4    #Node2
echo "127.0.0.1   $(hostname)" >> /etc/hosts  #三台都执行

ファイアウォールをオフにします

systemctl stop firewalld
systemctl disable firewalld

SeLinuxをオフにする

setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

スワップを閉じる

swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab

カーネルパラメータ
#設定されている場合は、変更します

sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf

#多分そうではない、追加

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
sysctl -p  #使配置生效

2. dockerとk8sをインストールします:(マスターとノードの両方にインストールします)

Dockerバージョン:18.09.7
kubernetesバージョン:1.17.1

1)Dockerをインストールします

1>古いバージョンをアンインストールします
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2> yumリポジトリを設定する
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3> dockerをインストールして起動します
yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
systemctl enable docker
systemctl start docker

2)k8sをインストールします

1> K8Syumソースを設定する
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
2>古いバージョンをアンインストールします
yum remove -y kubelet kubeadm kubectl
3>安装kubelet、bebeadm、kubectl
yum install -y kubelet-1.17.1 kubeadm-1.17.1 kubectl-1.17.1
4> docker CgroupDriverをsystemdに変更します

/usr/lib/systemd/system/docker.serviceこの行は、ファイルExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
に変更
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd

sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service

変更しないと、ワーカーノードを追加するときに次のエラーが発生する可能性があります

[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". 
#Please follow the guide at https://kubernetes.io/docs/setup/cri/
5> Dockerイメージを設定して、Dockerイメージのダウンロード速度と安定性を向上させます

https://hub.docker.ioにアクセスし、速度が非常に安定している場合は、この手順をスキップできます

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

または国内のアクセラレータを使用する

tee /root/daemon.json <<-'EOF'
{
    
    
    "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://3laho3y3.mirror.aliyuncs.com"],
    "data-root": "/home/docker"   #docker的数据目录
}
EOF
6> dockerを再起動し、kubeletを起動します
systemctl daemon-reload
systemctl restart docker
systemctl enable kubelet && systemctl start kubelet
7>注

このときにservicestatus kubeletコマンドを実行すると、kubeletの起動に失敗したというエラーメッセージが表示されます。kubeletが正常に起動する前に、以降の手順でkubeadm init操作を完了する必要があるため、このエラーは無視してください。

3.マスターノードを初期化します。

1)初期化

1>マスターノードでのみ実行
命令行执行以下命令
export MASTER_IP=x.x.x.x  				#x.x.x.x 为 master 节点的内网IP
export APISERVER_NAME=apiserver.demo    #替换 apiserver.demo 为 您想要的 dnsName
export POD_SUBNET=10.100.0.1/16         #Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export SVC_SUBNET=10.96.0.0/16       ##Kubernetes service所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts

参照リンク:https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2

rm -f ./kubeadm-config.yaml
2>初期設定ファイルを書き込む
cat <<EOF > ./kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.17.1      #需要根据当前版本号更改
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: "${APISERVER_NAME}:6443"  #上面已经定义过了,此处直接引用
networking:
  serviceSubnet: "${SVC_SUBNET}"               
  podSubnet: "${POD_SUBNET}"
  dnsDomain: "cluster.local"
EOF
3>初期化操作を実行します
kubeadm init --config=kubeadm-config.yaml --upload-certs  #根据你的服务器网速的情况,需要等候 3-10分钟

2)kubectlを構成します

rm -rf /root/.kube/
mkdir /root/.kube/
cp -i /etc/kubernetes/admin.conf /root/.kube/config

3)calicoネットワークプラグインをインストールします

参照ドキュメント:https://docs.projectcalico.org/v3.10/getting-started/kubernetes/

wget https://kuboard.cn/install-script/calico/calico-3.10.2.yaml
sed -i "s#192\.168\.0\.0/16#${POD_SUBNET}#" calico-3.10.2.yaml
kubectl apply -f calico-3.10.2.yaml

4)マスターの初期化結果を確認します。

次のコマンドを実行し、すべてのコンテナグループが実行状態になるまで3〜10分待ちます

watch kubectl get pod -n kube-system -o wide    #命令行监控pod状态
kubectl get nodes -o wide                       #查看master初始化结果

5)ノードノードを初期化します。

1>結合コマンドパラメータを取得します。
kubeadm token create --print-join-command  #master上执行,获取kubeadm join 命令及参数
2>作業の初期化:
export MASTER_IP=192.168.171.129
export APISERVER_NAME=apiserver.demo
echo "${MASTER_IP}  ${APISERVER_NAME}" >> /etc/hosts  #替换apiserver.demo为初始化master节点时所使用的 APISERVER_NAME
kubeadm join apiserver.demo:6443 --token ****** --discovery-token-ca-cert-hash ****** #node上执行

ここに画像の説明を挿入ここに画像の説明を挿入

6)初期化結果を確認します。

kubectl get pod -A   #pod会逐渐的启动起来

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44729138/article/details/105790214