kubernetes的安装
- 獲取源碼
最新安裝包下載地址,GitHub下載地址
本次實驗的1.10.0的二進制包下載,百度網(wǎng)盤
- 機器環(huán)境
| Master | 192.168.142.161 | kubernetes-node1.example.com |
| Node | 192.168.142.162 | kubernetes-node2.example.com |
| Node | 192.168.142.163 | kubernetes-node3.example.com |
Master端配置
- 配置kube-apiserver服務
基于CA簽名的雙向數(shù)字證書認證方式進行認證
生成過程如下:
設(shè)置kube-apiserver的CA證書相關(guān)的文件和啟動參數(shù)
OpenSSL工具在Master服務器上創(chuàng)建CA證書和私鑰相關(guān)的文件openssl genrsa -out ca.key 2048 openssl req -x509 -new -nodes -key ca.key -subj "/CN=example.com" -days 5000 -out ca.crt openssl genrsa -out server.key 2048生成文件如下:
ca.crt ca.key server.key創(chuàng)建Master_ssl.cnf文件,生成x509 v3版本證書.在該文件中主要需要設(shè)置Master服務器的hostname,IP地址,以及Kubernetes Master Service的虛擬服務器名稱和該虛擬服務器的clusterIP地址。
DNS.5為Master服務器的HostName,IP.1為Kubernetes Master Service的Cluster IP,IP.2為Master服務器的IP。
[req] req_extensions = v3_req distinguished_name = req_distinguished_name [req_distinguished_name] [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = kubernetes DNS.2 = kubernetes.default DNS.3 = kubernetes.default.svc DNS.4 = kubernetes.default.svc.cluster.local DNS.5 = kubernets-node1.example.com IP.1 = 169.169.0.1 IP.2 = 192.168.142.161基于Master_ssl.cnf生成server.csr和server.crt。
在生成server.csr時,-subj參數(shù)中/CN指定的名字需要為Master所在的主機名。
現(xiàn)在有6個文件:
ca.crt ca.key ca.srl server.crt server.csr server.keycp ca.crt ca.key ca.srl server.crt server.csr server.key /var/run/kubernetes/指定配置文件/etc/kubernetes/apiserver的內(nèi)容,具體內(nèi)容如下:
vim /etc/kubernetes/apiserverKUBE_API_ARGS="--etcd-servers=http://192.168.142.161:2379,http://192.168.142.162:2379,http://192.168.142.163:2379 --bind-address=0.0.0.0 --secure-port=443 --insecure-port=0 --client-ca-file=/var/run/kubernetes/ca.crt --tls-private-key-file=/var/run/kubernetes/server.key --tls-cert-file=/var/run/kubernetes/server.crt --service-cluster-ip-range=169.169.0.0/16 --service-node-port-range=1-65535 --enable-admission-plugins=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ResourceQuota --logtostderr=false --log-dir=/var/log/kubernetes --v=2"- 配置kube-controller-manager服務
kube-controller-manager依賴于kube-apiserver服務。
配置啟動文件
cat /usr/lib/systemd/system/kube-controller-manager.service [Unit] Description=Kubernetes Controller Manager Documentation=https://github.com/kubernetes/kubernetes After=kube-apiserver.service Wants=kube-apiserver.service[Service] EnvironmentFile=/etc/kubernetes/controller-manager ExecStart=/usr/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS Restart=on-failure #Type=notify LimitNOFILE=65536[Install] WantedBy=multi-user.target設(shè)置kube-controller-manager的客戶端證書、私鑰
openssl genrsa -out cs_client.key 2048 openssl req -new -key cs_client.key -subj "/CN=kubernets-node1.example.com" -out cs_client.csr openssl x509 -req -in cs_client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out cs_client.crt -days 5000其中在生成cs_client.crt時,-CA參數(shù)和-CAkey參數(shù)使用的是apiserver的ca.crt和ca.key文件,然后將這些文件復制到一個目錄中(/var/run/kubernetes)
接下來創(chuàng)建/etc/kubernetes/kubeconfig文件(kube-controller-manager與kube-scheduler共用)
內(nèi)容如下
然后設(shè)置kube-controller-manager的啟動參數(shù)
cat /etc/kubernetes/controller-manager KUBE_CONTROLLER_MANAGER_ARGS="--master=https://192.168.142.161 --service-account-private-key-file=/var/run/kubernetes/server.key --root-ca-file=/var/run/kubernetes/ca.crt --kubeconfig=/etc/kubernetes/kubeconfig --logtostderr=false --log-dir=/var/log/kubernetes --v=2"- 配置kube-scheduler服務
kube-scheduler服務也依賴于kube-apiserver服務
cat /usr/lib/systemd/system/kube-scheduler.service[Unit] Description=Kubernetes Scheduler Documentation=https://github.com/kubernetes/kubernetes After=kube-apiserver.service Wants=kube-apiserver.service[Service] EnvironmentFile=/etc/kubernetes/scheduler ExecStart=/usr/bin/kube-scheduler $KUBE_SCHEDULER_ARGS Restart=on-failure #Type=notify LimitNOFILE=65536[Install] WantedBy=multi-user.target復用kube-controller-manager創(chuàng)建的客戶端證書
配置開機啟動參數(shù)
cat /etc/kubernetes/scheduler KUBE_SCHEDULER_ARGS="--master=https://192.168.142.161 --kubeconfig=/etc/kubernetes/kubeconfig --logtostderr=false --log-dir=/var/lib/kubernetes --v=2"至此Master端安裝完成。啟動所有服務:
systemctl start kube-apiserver systemctl start kube-controller-manager systemctl start kube-kube-scheduler配置Node上的kubelet和kube-proxy
kubelet服務依賴docker,這里我們需要安裝docker。安裝過程如下:
如果你之前安裝過 docker,請先刪掉 yum remove docker docker-common docker-selinux docker-engine 安裝依賴 yum install -y yum-utils device-mapper-persistent-data lvm2 下載repo文件 wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo 替換為國內(nèi)的源鏡像站 sed -i 's+download-stage.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo 安裝docker yum install docker-ce 啟動 systemctl enable docker systemctl start docker1:首先復制kube-apiserver的ca.crt和ca.key文件到node上,在生成kubelet_client.crt時-CA參數(shù)和-CAkey參數(shù)使用的是apiserver的ca.crt和ca.key文件。在生成kube_let.csr時-subj參數(shù)中的“/CN”設(shè)置為Node的IP地址。
openssl genrsa -out kubelet_client.key 2048 openssl req -new -key kubelet_client.key -subj "/CN=192.168.142.162" -out kubelet_client.csr openssl x509 -req -in kubelet_client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out kubelet_client.crt -days 50002:然后創(chuàng)建/etc/kubernetes/kubeconfig文件。(kubelet和kube-proxy進程共用),配置客戶端證書等相關(guān)參數(shù):
cat /etc/kubernetes/kubeconfigapiVersion: v1 kind: Config users: - name: kubeletuser:client-certificate: /var/run/kubernetes/kubelet_client.crtclient-key: /var/run/kubernetes/kubelet_client.key clusters: - name: localcluster:server: https://192.168.142.161certificate-authority: /var/run/kubernetes/ca.crt contexts: - context:cluster: localuser: kubeletname: my-context current-context: my-context3:設(shè)置kubelet服務的啟動參數(shù)
cat /etc/kubernetes/kubeletKUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --hostname-override=192.168.142.162 --pod-infra-container-image=registry-vpc.cn-beijing.aliyuncs.com/k8s_len/pause-amd64:3.0 --fail-swap-on=false --logtostderr=false --log-dir=/var/log/kubernetes --v=2"4:設(shè)置kube-proxy的啟動參數(shù)
cat /etc/kubernetes/kube-proxyKUBE_PROXY_ARGS="--master=https://192.168.142.161 --kubeconfig=/etc/kubernetes/kubeconfig --logtostderr=false --log-dir=/var/log/kubernetes --v=2"5:定義開機服務的啟動項
cat /usr/lib/systemd/system/kubelet.service [Unit] Description=Kubernetes Kubelet Server Documentation=https://github.com/kubernetes/kubernetes After=docker.service Wants=docker.service[Service] WorkingDirectory=/var/lib/kubelet EnvironmentFile=/etc/kubernetes/kubeconfig.yaml EnvironmentFile=/etc/kubernetes/kubelet ExecStart=/usr/bin/kubelet $KUBELET_ARGS Restart=on-failure #Type=notify #LimitNOFILE=65536[Install] WantedBy=multi-user.target cat /usr/lib/systemd/system/kube-proxy.service [Unit] Description=Kubernetes Kube-proxy Server Documentation=https://github.com/kubernetes/kubernetes After=network.service Wants=network.service[Service] EnvironmentFile=/etc/kubernetes/kube-proxy ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS Restart=on-failure #Type=notify LimitNOFILE=65536[Install] WantedBy=multi-user.target轉(zhuǎn)載于:https://www.cnblogs.com/skymyyang/p/9122294.html
總結(jié)
以上是生活随笔為你收集整理的kubernetes的安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫画算法:什么是一致性哈希?
- 下一篇: python---微信聊天机器人