kubeadmを使用してkubernetesをインストールする
概要:
kubernetesクラスタ構造とインストール環境
参照ドキュメント:
https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/
http://www.cnblogs.com/liangDream/p/7358847.html
一、すべてのノードにkubeadmをインストールする
システムに残っているkubernetesファイルをクリーンアップ
アリクラウドのkubernetes倉庫を配備
クベドのインストール
インストールが完了したら、以下のコンポーネントが必要です.
dockerはdocker-ceを使用しています
新しいdocker-ce倉庫
docker-ceのインストール
二、ミラーをすべてのノードに配備する
必要なミラーは、Googleミラーのために必要です×××,ミラーをdockerhubに構築してからローカルウェアハウスにダウンロードできます
ミラー化プロセスリファレンスの構築
https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/
http://www.cnblogs.com/liangDream/p/7358847.html
既存のプライベート・ウェアハウス・キーをローカルにコピー
dockerウェアハウスをログインし、プライベートウェアハウスにログインします.
プライベートウェアハウス内のミラーのダウンロード
ミラー名の変更
三、すべてのノードがクbeletを起動する
hostsにすべてのホスト名を追加
クbeletを直接起動するとこのエラーが発生します
そのため、以下の内容を修正する必要があります.
以下は修正するが,なければ何もしない.
開始
コンフィギュレーションファイルが見つからないと起動に失敗するかもしれませんが、気にしないでください.kubeadmはコンフィギュレーションファイルを与えてkubeletを起動するので、kubeadm initを実行して失敗した後にkubeleteを起動することをお勧めします.
四、kubeadm配置masterノード
マスターノードは以下のコマンドを実行します.
次のように表示されます.
次のことを覚えておいてください.後でノードを追加するには
要求どおりに実行する
calicoネットワークを配備するには、kubernetes-dashboardを配備してからcalicoネットワークを配備することが望ましい.
ネームスペースの表示
五、メインノードはkubernetes-dashboardをインストールする
kubernetes-dashboard対応yamlファイルをダウンロード
このyamlファイルを変更し、サービス対外ポートを固定します.
dashboardの作成
六、ノードからクラスタに参加する
ノードから/etc/systemd/system/kubeletを変更します.service.d/ファイル後実行
dashboardのNodePortの表示
Webページを開く
http://172.19.2.50:30099/
kubernetesクラスタ構造とインストール環境
:
172.19.2.50
:kubectl、Kube-Proxy、kube-dns、etcd、kube-apiserver、kube-controller-manager、kube-scheduler、calico-node、calico-policy-controller、calico-etcd
:
172.19.2.51
172.19.2.140
:kubernetes-dashboard、calico-node、kube-proxy
kubernetes-dashboard :
http://172.19.2.50:30099/
kubectl: kubernetes
Kube-Proxy: ,kubernetes master ( :30000-32767)
kube-dns: DNS
etcd: , KV
kube-apiserver: k8s , kubectl remote api , apiserver
kube-controller-manager: master , , node,pod,replication,service,namespace
kube-scheduler: pod (minion) , (bind)
calico: BGP ,
kubernetes-dashboard: Kubernets
参照ドキュメント:
https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/
http://www.cnblogs.com/liangDream/p/7358847.html
一、すべてのノードにkubeadmをインストールする
システムに残っているkubernetesファイルをクリーンアップ
rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd
rm -rf $HOME/.kube
アリクラウドのkubernetes倉庫を配備
vim /etc/yum.repos.d/kubernetes.repo
[kube]
name=Kube
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
クベドのインストール
yum install kubeadm
インストールが完了したら、以下のコンポーネントが必要です.
rpm -qa | grep kube
kubernetes-cni-0.5.1-0.x86_64
kubelet-1.7.5-0.x86_64
kubectl-1.7.5-0.x86_64
kubeadm-1.7.5-0.x86_64
dockerはdocker-ceを使用しています
新しいdocker-ce倉庫
vim /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://download.docker.com/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://download.docker.com/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://download.docker.com/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
docker-ceのインストール
yum install docker-ce
二、ミラーをすべてのノードに配備する
必要なミラーは、Googleミラーのために必要です×××,ミラーをdockerhubに構築してからローカルウェアハウスにダウンロードできます
gcr.io/google_containers/etcd-amd64:3.0.17
gcr.io/google_containers/kube-apiserver-amd64:v1.7.6
gcr.io/google_containers/kube-controller-manager-amd64:v1.7.6
gcr.io/google_containers/kube-scheduler-amd64:v1.7.6
quay.io/coreos/etcd:v3.1.10
quay.io/calico/node:v2.4.1
quay.io/calico/cni:v1.10.0
quay.io/calico/kube-policy-controller:v0.7.0
gcr.io/google_containers/pause-amd64:3.0
gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4
gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3
gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4
gcr.io/google_containers/kube-proxy-amd64:v1.7.6
ミラー化プロセスリファレンスの構築
https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/
http://www.cnblogs.com/liangDream/p/7358847.html
既存のプライベート・ウェアハウス・キーをローカルにコピー
mkdir -pv /etc/docker/certs.d/172.19.2.139/
vim /etc/docker/certs.d/172.19.2.139/ca.crt
-----BEGIN CERTIFICATE-----
MIIDvjCCAqagAwIBAgIUQzFZBuFh7EZLOzWUYZ10QokL+BUwDQYJKoZIhvcNAQEL
BQAwZTELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JlaUppbmcxEDAOBgNVBAcTB0Jl
aUppbmcxDDAKBgNVBAoTA2s4czEPMA0GA1UECxMGU3lzdGVtMRMwEQYDVQQDEwpr
dWJlcm5ldGVzMB4XDTE3MDcwNDA4NTMwMFoXDTIyMDcwMzA4NTMwMFowZTELMAkG
A1UEBhMCQ04xEDAOBgNVBAgTB0JlaUppbmcxEDAOBgNVBAcTB0JlaUppbmcxDDAK
BgNVBAoTA2s4czEPMA0GA1UECxMGU3lzdGVtMRMwEQYDVQQDEwprdWJlcm5ldGVz
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyWgHFV6Cnbgxcs7X7ujj
APnnMmotzNnnTRhygJLCMpCZUaWYrdBkFE4T/HGpbYi1R5AykSPA7FCffFHpJIf8
Gs5DAZHmpY/uRsLSrqeP7/D8sYlyCpggVUeQJviV/a8L7PkCyGq9DSiU/MUBg4CV
Dw07OT46vFJH0lzTaZJNSz7E5QsekLyzRb61tZiBN0CJvSOxXy7wvdqK0610OEFM
T6AN8WfafTH4qmKWulFBJN1LjHTSYfTZzCL6kfTSG1M3kqG0W4B2o2+TkNLVmC9n
gEKdeh/yQmQWfraRkuWiCorJZGxte27xpjgu7u62sRyCm92xQRNgp5RiGHxP913+
HQIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBAjAd
BgNVHQ4EFgQUDFiYOhMMWkuq93iNBoC1Udr9wLIwHwYDVR0jBBgwFoAUDFiYOhMM
Wkuq93iNBoC1Udr9wLIwDQYJKoZIhvcNAQELBQADggEBADTAW0FPhfrJQ6oT/WBe
iWTv6kCaFoSuWrIHiB9fzlOTUsicrYn6iBf+XzcuReZ6qBILghYGPWPpOmnap1dt
8UVl0Shdj+hyMbHzxR0XzX12Ya78Lxe1GFg+63XbxNwOURssd9DalJixKcyj2BW6
F6JG1aBQhdgGSBhsCDvG1zawqgZX/h4VWG55Kv752PYBrQOtUH8CS93NfeB5Q7bE
FOuyvGVd1iO40JQLoFIkZuyxNh0okGjfmT66dia7g+bC0v1SCMiE/UJ9uvHvfPYe
qLkSRjIHH7FH1lQ/AKqjl9qrpZe7lHplskQ/jynEWHcb60QRcAWPyd94OPrpLrTU
64g=
-----END CERTIFICATE-----
dockerウェアハウスをログインし、プライベートウェアハウスにログインします.
docker logout
docker login 172.19.2.139
Username: admin
Password: Cmcc@1ot
プライベートウェアハウス内のミラーのダウンロード
docker pull 172.19.2.139/xsllqs/etcd-amd64:3.0.17
docker pull 172.19.2.139/xsllqs/kube-scheduler-amd64:v1.7.6
docker pull 172.19.2.139/xsllqs/kube-apiserver-amd64:v1.7.6
docker pull 172.19.2.139/xsllqs/kube-controller-manager-amd64:v1.7.6
docker pull 172.19.2.139/xsllqs/etcd:v3.1.10
docker pull 172.19.2.139/xsllqs/node:v2.4.1
docker pull 172.19.2.139/xsllqs/cni:v1.10.0
docker pull 172.19.2.139/xsllqs/kube-policy-controller:v0.7.0
docker pull 172.19.2.139/xsllqs/pause-amd64:3.0
docker pull 172.19.2.139/xsllqs/k8s-dns-kube-dns-amd64:1.14.4
docker pull 172.19.2.139/xsllqs/k8s-dns-dnsmasq-nanny-amd64:1.14.4
docker pull 172.19.2.139/xsllqs/kubernetes-dashboard-amd64:v1.6.3
docker pull 172.19.2.139/xsllqs/k8s-dns-sidecar-amd64:1.14.4
docker pull 172.19.2.139/xsllqs/kube-proxy-amd64:v1.7.6
ミラー名の変更
docker tag 172.19.2.139/xsllqs/etcd-amd64:3.0.17 gcr.io/google_containers/etcd-amd64:3.0.17
docker tag 172.19.2.139/xsllqs/kube-scheduler-amd64:v1.7.6 gcr.io/google_containers/kube-scheduler-amd64:v1.7.6
docker tag 172.19.2.139/xsllqs/kube-apiserver-amd64:v1.7.6 gcr.io/google_containers/kube-apiserver-amd64:v1.7.6
docker tag 172.19.2.139/xsllqs/kube-controller-manager-amd64:v1.7.6 gcr.io/google_containers/kube-controller-manager-amd64:v1.7.6
docker tag 172.19.2.139/xsllqs/etcd:v3.1.10 quay.io/coreos/etcd:v3.1.10
docker tag 172.19.2.139/xsllqs/node:v2.4.1 quay.io/calico/node:v2.4.1
docker tag 172.19.2.139/xsllqs/cni:v1.10.0 quay.io/calico/cni:v1.10.0
docker tag 172.19.2.139/xsllqs/kube-policy-controller:v0.7.0 quay.io/calico/kube-policy-controller:v0.7.0
docker tag 172.19.2.139/xsllqs/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0
docker tag 172.19.2.139/xsllqs/k8s-dns-kube-dns-amd64:1.14.4 gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4
docker tag 172.19.2.139/xsllqs/k8s-dns-dnsmasq-nanny-amd64:1.14.4 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4
docker tag 172.19.2.139/xsllqs/kubernetes-dashboard-amd64:v1.6.3 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3
docker tag 172.19.2.139/xsllqs/k8s-dns-sidecar-amd64:1.14.4 gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4
docker tag 172.19.2.139/xsllqs/kube-proxy-amd64:v1.7.6 gcr.io/google_containers/kube-proxy-amd64:v1.7.6
三、すべてのノードがクbeletを起動する
hostsにすべてのホスト名を追加
クbeletを直接起動するとこのエラーが発生します
journalctl -xe
error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgrou
そのため、以下の内容を修正する必要があります.
vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"
以下は修正するが,なければ何もしない.
vim /etc/systemd/system/kubelet.service.d/99-kubelet-droplet.conf
Environment="KUBELET_EXTRA_ARGS=--pod-infra-container-image=registry.aliyuncs.com/archon/pause-amd64:3.0 --cgroup-driver=cgroupfs"
開始
systemctl enable kubelet
systemctl start kubelet
コンフィギュレーションファイルが見つからないと起動に失敗するかもしれませんが、気にしないでください.kubeadmはコンフィギュレーションファイルを与えてkubeletを起動するので、kubeadm initを実行して失敗した後にkubeleteを起動することをお勧めします.
四、kubeadm配置masterノード
マスターノードは以下のコマンドを実行します.
kubeadm reset
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
kubeadm init --kubernetes-version=v1.7.6
次のように表示されます.
[apiclient] All control plane components are healthy after 30.001912 seconds
[token] Using token: cab485.49b7c0358a06ad35
[apiconfig] Created RBAC rules
[addons] Applied essential addon: kube-proxy
[addons] Applied essential addon: kube-dns
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run (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:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token cab485.49b7c0358a06ad35 172.19.2.50:6443
次のことを覚えておいてください.後でノードを追加するには
kubeadm join --token cab485.49b7c0358a06ad35 172.19.2.50:6443
要求どおりに実行する
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
calicoネットワークを配備するには、kubernetes-dashboardを配備してからcalicoネットワークを配備することが望ましい.
cd /home/lvqingshan/
kubectl apply -f http://docs.projectcalico.org/v2.4/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
ネームスペースの表示
kubectl get pods --all-namespaces
五、メインノードはkubernetes-dashboardをインストールする
kubernetes-dashboard対応yamlファイルをダウンロード
cd /home/lvqingshan/
wget https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml -O kubernetes-dashboard.yaml
このyamlファイルを変更し、サービス対外ポートを固定します.
vim kubernetes-dashboard.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
spec:
containers:
- name: kubernetes-dashboard
image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3
ports:
- containerPort: 9090
protocol: TCP
args:
# Uncomment the following line to manually specify Kubernetes API server Host
# If not specified, Dashboard will attempt to auto discover the API server and connect
# to it. Uncomment only if the default does not work.
# - --apiserver-host=http://my-address:port
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
serviceAccountName: kubernetes-dashboard
# Comment the following tolerations if Dashboard must not be deployed on master
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
---
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 80
targetPort: 9090
nodePort: 30099 # ,
selector:
k8s-app: kubernetes-dashboard
type: NodePort # ,
dashboardの作成
kubectl create -f kubernetes-dashboard.yaml
六、ノードからクラスタに参加する
ノードから/etc/systemd/system/kubeletを変更します.service.d/ファイル後実行
systemctl enable kubelet
systemctl start kubelet
kubeadm join --token cab485.49b7c0358a06ad35 172.19.2.50:6443
dashboardのNodePortの表示
kubectl describe svc kubernetes-dashboard --namespace=kube-system
Webページを開く
http://172.19.2.50:30099/