新聞中心
部署環(huán)境
此次部署kubernetes1.8.3版本使用兩臺機器進(jìn)行操作,一臺做為Master節(jié)點,一臺作為Node節(jié)點。部署流程及配置與正式環(huán)境下是一致的。

創(chuàng)新互聯(lián)公司于2013年開始,先為貢覺等服務(wù)建站,貢覺等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為貢覺企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
Kubernetes Master節(jié)點:10.0.11.222
Kubernetes Node節(jié)點:10.0.11.221
部署軟件
centos:CentOS 7.3
Docker:17.03.2-ce
Kubernetes:1.8.3
etcd:3.2.7
flannel:v0.7.1
準(zhǔn)備工作
master節(jié)點、node節(jié)點都要做這些準(zhǔn)備工作。
關(guān)閉防火墻
# 關(guān)閉防火墻
[root@mimo222 ~]# systemctl stop firewalld
# 禁用防火墻
[root@mimo222 ~]# systemctl disable firewalld
禁用selinux
# 設(shè)置selinux為關(guān)閉
[root@mimo222 ~]# setenforce 0
# 打開selinux配置文件
[root@mimo222 ~]# vim /etc/selinux/config
# SELINUX配置項修改為disabled
SELINUX=disabled
創(chuàng)建驗證
此次安裝kubernetes1.8.3,我們使用基于CA簽名的數(shù)字證書認(rèn)證方式,通過cfssl進(jìn)行證書生成。此次安裝是單Master節(jié)點,因此證書的生成都在Master節(jié)點完成。如果你安裝的是多Master節(jié)點,那么可在其中一個Master節(jié)點生成證書,然后同步將證書拷貝到其他的Master(注意:多個Master節(jié)點的證書目錄一定要一致,以避免不必要的問題出現(xiàn))。最后,在配置Node節(jié)點時,我們可以從Master節(jié)點拷貝Node節(jié)點需要的證書。
安裝 cfssl
[root@mimo222 ~]# mkdir -p /opt/local/cfssl
[root@mimo222 ~]# cd /opt/local/cfssl
[root@mimo222 ~]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
[root@mimo222 ~]# mv cfssl_linux-amd64 cfssl
[root@mimo222 ~]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
[root@mimo222 ~]# mv cfssljson_linux-amd64 cfssljson
[root@mimo222 ~]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
[root@mimo222 ~]# mv cfssl-certinfo_linux-amd64 cfssl-certinfo
[root@mimo222 ~]# chmod +x *
安裝cfssl需要下載上面命令中的三個文件,如果通過wget無法下載,可通過直接在網(wǎng)頁上訪問該鏈接下載,然后拷貝到/opt/local/cfssl目錄。注意修改文件權(quán)限。
創(chuàng)建 CA 證書配置
創(chuàng)建ssl目錄:
[root@mimo222 ~]# mkdir /opt/ssl
[root@mimo222 ~]# cd /opt/ssl
在/opt/ssl目錄下創(chuàng)建config.json文件:
vi config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
],
"expiry": "87600h"
}
}
}
}
在/opt/ssl目錄下創(chuàng)建csr.json 文件:
vi csr.json
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "ShenZhen",
"L": "ShenZhen",
"O": "k8s",
"OU": "System"
}
]
}
生成 CA 證書和私鑰
[root@mimo222 ~]# cd /opt/ssl/
# 生成CA證書和私鑰
[root@mimo222 ~]# /opt/local/cfssl/cfssl gencert -initca csr.json | /opt/local/cfssl/cfssljson -bare ca
[root@mimo222 ~]# ls -lt
total 5
-rw-r--r-- 1 root root 1005 Dec 14 17:48 ca.csr
-rw------- 1 root root 1679 Dec 14 17:48 ca-key.pem
-rw-r--r-- 1 root root 1363 Dec 14 17:48 ca.pem
-rw-r--r--. 1 root root 292 Dec 14 17:45 config.json
-rw-r--r-- 1 root root 210 Dec 14 17:48 csr.json
分發(fā)證書
我們將所有kubernetes相關(guān)的證書都保存到/etc/kubernetes/ssl目錄,方便管理。
# 創(chuàng)建證書目錄
[root@mimo222 ~]# mkdir -p /etc/kubernetes/ssl
# 拷貝所有文件到目錄下
[root@mimo222 ~]# cp *.pem /etc/kubernetes/ssl
[root@mimo222 ~]# cp ca.csr /etc/kubernetes/ssl
# 這里要將文件拷貝到所有的k8s Master機器上
# 這里演示一下多Master節(jié)點時證書的保存方式,在每次生成證書之后,都可以通過下面的方式將證書拷貝
# 到遠(yuǎn)程Master節(jié)點,保證數(shù)據(jù)的同步。下面其他證書方式一樣,就不再寫了。
[root@mimo222 ~]# scp *.pem xx.xx.xx.xx:/etc/kubernetes/ssl/
[root@mimo222 ~]# scp *.csr xx.xx.xx.xx:/etc/kubernetes/ssl/
安裝Docker
所有kubernetes節(jié)點都需要安裝docker,并且版本最好一致。
開始安裝
# 刪除老版本Docker及依賴,如果機器上裝過其他版本的docker,可通過該命令進(jìn)行老版本docker清理
[root@mimo222 ~]# yum remove docker docker-common container-selinux docker-selinux docker-engine
# 安裝 yum-config-manager
[root@mimo222 ~]# yum -y install yum-utils
# 導(dǎo)入yum源
[root@mimo222 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 更新repo
[root@mimo222 ~]# yum makecache
# 查看yum版本
[root@mimo222 ~]# yum list docker-ce.x86_64 --showduplicates |sort -r
# 安裝指定版本docker-ce 17.03被docker-ce-selinux依賴,不能直接yum安裝docker-ce-selinux
# 如果此處通過wget無法下載,可到網(wǎng)上查一下這個rpm包,下載下來然后拷貝到服務(wù)器???。
[root@mimo222 ~]# wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
[root@mimo222 ~]# rpm -ivh docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
# 安裝docker
[root@mimo222 ~]# yum -y install docker-ce-17.03.2.ce
查看docker版本
[root@mimo222 ~]# docker version
Client:
Version: 17.03.2-ce
API version: 1.27
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 02:21:36 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.2-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 02:21:36 2017
OS/Arch: linux/amd64
Experimental: false
更改docker配置
更改/usr/lib/systemd/system/docker.service啟動文件
[root@mimo222 ~]# vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS $DOCKER_DNS_OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
對比初始安裝docker后的docker.service文件內(nèi)容,修改docker.service文件。
修改其他配置
[root@mimo222 ~]# mkdir -p /usr/lib/systemd/system/docker.service.d/
docker-options.conf該文件中保存docker啟動的一些參數(shù)
[root@mimo222 ~]# vi /usr/lib/systemd/system/docker.service.d/docker-options.conf
# 文件中添加信息如下:(注意 Environment配置信息必須在同一行,如果出現(xiàn)換行會無法加載)
[Service]
Environment="DOCKER_OPTS=--insecure-registry=10.254.0.0/16 --graph=/opt/docker --disable-legacy-registry"
[root@mimo222 ~]# vi /usr/lib/systemd/system/docker.service.d/docker-dns.conf
# 添加如下 :
[Service]
Environment="DOCKER_DNS_OPTIONS=\
--dns 10.254.0.2 --dns 114.114.114.114 \
--dns-search default.svc.cluster.local --dns-search svc.cluster.local \
--dns-opt ndots:2 --dns-opt timeout:2 --dns-opt attempts:2"
flannel.conf:該文件保存了讀取flannel網(wǎng)絡(luò)分段信息
# 1. 該配置文件用于和flannel網(wǎng)絡(luò)交互,若使用的網(wǎng)絡(luò)配置不是flannel,則無需該配置文件
# 2. 該配置文件需在flannel安裝配置之后才能生效
vi /usr/lib/systemd/system/docker.service.d/flannel.conf
添加如下信息:
[Service]
EnvironmentFile=-/run/flannel/docker
啟動、重啟、查看docker
# 重新讀取配置
[root@mimo222 ~]# systemctl daemon-reload
# 啟動docker
[root@mimo222 ~]# systemctl start docker
# 設(shè)置為開機啟動
[root@mimo222 ~]# systemctl enable docker
# 查看docker運行狀態(tài)
[root@mimo222 ~]# systemctl status docker
# 重啟docker
[root@mimo222 ~]# systemctl restart docker
# 停止運行docker
[root@mimo222 ~]# systemctl stop docker
etcd安裝配置
etcd是kubernetes集群最重要的組件, etcd掛了,集群就掛了。
安裝etcd
這里我是在別的地方下載了etcd-3.2.9-3.el7.x86_64.rpm,然后拷貝到服務(wù)器上進(jìn)行安裝。
rpm -ivh etcd-3.2.9-3.el7.x86_64.rpm
創(chuàng)建etcd證書
[root@mimo222 ~]# cd /opt/ssl/
[root@mimo222 ~]# vi etcd-csr.json
# 添加如下內(nèi)容:
{
"CN": "etcd",
"hosts": [
"127.0.0.1",
"10.0.11.222"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "TianJin",
"L": "TianJin",
"O": "k8s",
"OU": "System"
}
]
}
其中,hosts中填寫的是etcd節(jié)點的地址,這里只安裝了單節(jié)點etcd,因此只填寫了etcd本地地址127.0.0.1以及10.0.11.222。如果安裝的是etcd集群,則需要在hosts中添加別的etcd節(jié)點的ip地址。
# 生成 etcd 密鑰
/opt/local/cfssl/cfssl gencert -ca=/opt/ssl/ca.pem \
-ca-key=/opt/ssl/ca-key.pem \ -config=/opt/ssl/config.json \ -profile=kubernetes etcd-csr.json | /opt/local/cfssl/cfssljson -bare etcd
/opt/local/cfssl/cfssl:使用cfssl進(jìn)行證書生成
# 查看生成信息
[root@mimo222 ~]# ll etcd*
-rw-r--r-- 1 root root 1050 Dec 14 18:31 etcd.csr
-rw-r--r-- 1 root root 257 Dec 14 18:31 etcd-csr.json
-rw------- 1 root root 1679 Dec 14 18:31 etcd-key.pem
-rw-r--r-- 1 root root 1424 Dec 14 18:31 etcd.pem
# 拷貝
[root@mimo222 ~]# cp etcd*.pem /etc/kubernetes/ssl/
# 如果 etcd 非 root 用戶,讀取證書會提示沒權(quán)限
[root@mimo222 ~]# chmod 644 /etc/kubernetes/ssl/etcd-key.pem
修改etcd配置
修改 etcd 配置文件/etc/etcd/etcd.conf
# 備份原來的etcd.conf配置文件
mv /etc/etcd/etcd.conf /etc/etcd/etcd.conf-bak
# 重新寫一份配置文件
vi /etc/etcd/etcd.conf
# [member]
ETCD_NAME=etcd1 # etcd節(jié)點名稱
ETCD_DATA_DIR="/var/lib/etcd/etcd1.etcd"
ETCD_WAL_DIR="/var/lib/etcd/wal"
ETCD_SNAPSHOT_COUNT="100"
ETCD_HEARTBEAT_INTERVAL="100"
ETCD_ELECTION_TIMEOUT="1000"
ETCD_LISTEN_PEER_URLS="https://[Node IP]:2380"
ETCD_LISTEN_CLIENT_URLS="https://[Node IP]:2379,http://127.0.0.1:2379"
ETCD_MAX_SNAPSHOTS="5"
ETCD_MAX_WALS="5"
#ETCD_CORS=""
# [cluster]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://[Node IP]:2380"
# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
ETCD_INITIAL_CLUSTER="etcd1=https://[Node IP]:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="k8s-etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="https://[Node IP]:2379"
#ETCD_DISCOVERY=""
#ETCD_DISCOVERY_SRV=""
#ETCD_DISCOVERY_FALLBACK="proxy"
#ETCD_DISCOVERY_PROXY=""
#ETCD_STRICT_RECONFIG_CHECK="false"
#ETCD_AUTO_COMPACTION_RETENTION="0"
# [proxy]
#ETCD_PROXY="off"
#ETCD_PROXY_FAILURE_WAIT="5000"
#ETCD_PROXY_REFRESH_INTERVAL="30000"
#ETCD_PROXY_DIAL_TIMEOUT="1000"
#ETCD_PROXY_WRITE_TIMEOUT="5000"
#ETCD_PROXY_READ_TIMEOUT="0"
# [security]
ETCD_CERT_FILE="/etc/kubernetes/ssl/etcd.pem"
ETCD_KEY_FILE="/etc/kubernetes/ssl/etcd-key.pem"
ETCD_CLIENT_CERT_AUTH="true"
ETCD_TRUSTED_CA_FILE="/etc/kubernetes/ssl/ca.pem"
ETCD_AUTO_TLS="true"
ETCD_PEER_CERT_FILE="/etc/kubernetes/ssl/etcd.pem"
ETCD_PEER_KEY_FILE="/etc/kubernetes/ssl/etcd-key.pem"
ETCD_PEER_CLIENT_CERT_AUTH="true"
ETCD_PEER_TRUSTED_CA_FILE="/etc/kubernetes/ssl/ca.pem"
ETCD_PEER_AUTO_TLS="true"
# [logging]
#ETCD_DEBUG="false"
# examples for -log-package-levels etcdserver=WARNING,security=DEBUG
#ETCD_LOG_PACKAGE_LEVELS=""
注意:
1、將上面的配置文件中的[Node IP]都修改為本機IP,這里我安裝在10.0.11.222,因此都修改成了10.0.11.222。
2、[security]下的配置項指定了證書的位置,因此要注意證書的位置是否正確。
3、如果安裝的是etcd集群,配置文件信息基本一致,只要修改[Node IP]為etcd節(jié)點的主機IP即可,同時修改ETCD_INITIAL_CLUSTER項,該項需要添加所有etcd節(jié)點,例如: ETCD_INITIAL_CLUSTER="etcd1=https://172.16.1.64:2380,etcd2=https://172.16.1.65:2380,etcd3=https://172.16.1.66:2380"。
啟動 etcd
[root@mimo222 ~]# systemctl enable etcd
[root@mimo222 ~]# systemctl start etcd
[root@mimo222 ~]# systemctl status etcd
# 如果報錯 請使用
journalctl -f -t etcd 和 journalctl -u etcd 來定位問題
[root@mimo222 ~]# journalctl -f -t etcd
驗證 etcd 狀態(tài)
查看 etcd 狀態(tài)
若為etcd集群,則--endpoints需要填寫所有etcd節(jié)點IP:PORT
etcdctl --endpoints=https://10.0.11.222:2379\
--cert-file=/etc/kubernetes/ssl/etcd.pem \ --ca-file=/etc/kubernetes/ssl/ca.pem \ --key-file=/etc/kubernetes/ssl/etcd-key.pem \ cluster-health
member 2012db49e3efb509 is healthy: got healthy result from https://10.0.11.222:2379
cluster is healthy
查看 etcd 集群成員
etcdctl --endpoints=https://10.0.11.222:2379\
--cert-file=/etc/kubernetes/ssl/etcd.pem \ --ca-file=/etc/kubernetes/ssl/ca.pem \ --key-file=/etc/kubernetes/ssl/etcd-key.pem \ member list
2012db49e3efb509: name=etcd1 peerURLs=http://10.0.11.222:2380 clientURLs=https://10.0.11.222:2379 isLeader=true
Kubernetes Master節(jié)點安裝配置
Master需要部署 kube-apiserver , kube-scheduler , kube-controller-manager 這三個組件。 kube-scheduler 作用是調(diào)度pods分配到那個node里,簡單來說就是資源調(diào)度。 kube-controller-manager 作用是 對 deployment controller , replication controller, endpoints controller, namespace controller and serviceaccounts controller等等的循環(huán)控制,與kube-apiserver交互。
安裝組件
[root@mimo222 ~]# mkdir /tmp/kubernetes
[root@mimo222 ~]# cd /tmp/kubernetes
# 這個包比較大,幾百兆,我通過wget沒有下下來... 直接在網(wǎng)頁上輸入這個網(wǎng)址,然后一點一點下載下來了..
# 大家可以用別的方法下載,然后拷貝到服務(wù)器上即可。
[root@mimo222 ~]# wget https://dl.k8s.io/v1.8.3/kubernetes-server-linux-amd64.tar.gz
[root@mimo222 ~]# tar -xzvf kubernetes-server-linux-amd64.tar.gz
[root@mimo222 ~]# cd kubernetes
# Master節(jié)點不需要kubelet、kube-proxy,因此這里沒有拷貝這倆,如果要將master節(jié)點也裝成node節(jié)點,
# 則kubelet、kube-proxy這倆就需要拷貝出來了。
[root@mimo222 ~]# cp -r server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl} /usr/local/bin/
創(chuàng)建admin證書
kubectl 與 kube-apiserver 的安全端口通信,需要為安全通信提供 TLS 證書和秘鑰。
[root@mimo222 ~]# cd /opt/ssl/
[root@mimo222 ~]# vi admin-csr.json
# 添加以下信息:
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "TianJin",
"L": "TianJin",
"O": "system:masters",
"OU": "System"
}
]
}
生成admin 證書和私鑰
[root@mimo222 ~]# cd /opt/ssl/
/opt/local/cfssl/cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \
-ca-key=/etc/kubernetes/ssl/ca-key.pem \ -config=/opt/ssl/config.json \ -profile=kubernetes admin-csr.json | /opt/local/cfssl/cfssljson -bare admin
查看生成
[root@mimo222 ssl]# ll admin*
-rw-r--r-- 1 root root 1013 Dec 14 19:22 admin.csr
-rw-r--r-- 1 root root 231 Dec 14 19:22 admin-csr.json
-rw------- 1 root root 1679 Dec 14 19:22 admin-key.pem
-rw-r--r-- 1 root root 1407 Dec 14 19:22 admin.pem
拷貝到指定目錄
cp admin*.pem /etc/kubernetes/ssl/
配置 kubectl kubeconfig 文件
生成證書相關(guān)的配置文件存儲與 /root/.kube 目錄中
# 配置 kubernetes 集群
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \ --embed-certs=true \ --server=https://127.0.0.1:6443
# 配置 客戶端認(rèn)證
kubectl config set-credentials admin \
--client-certificate=/etc/kubernetes/ssl/admin.pem \ --embed-certs=true \ --client-key=/etc/kubernetes/ssl/admin-key.pem
kubectl config set-context kubernetes \
--cluster=kubernetes \ --user=admin
kubectl config use-context kubernetes
創(chuàng)建 kubernetes 證書
[root@mimo222 ~]# cd /opt/ssl
[root@mimo222 ~]# vi kubernetes-csr.json
{
"CN": "kubernetes",
"hosts": [
"127.0.0.1",
"10.0.11.222",
"10.254.0.1",
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluster.local"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "ShenZhen",
"L": "ShenZhen",
"O": "k8s",
"OU": "System"
}
]
}
這里 hosts 字段中三個 IP 分別為 127.0.0.1 本機、172.16.1.64 為 Master 的IP(多個Master節(jié)點需要將所有master節(jié)點IP都寫在這)、 10.254.0.1 為 kubernetes SVC的 IP, 一般是部署網(wǎng)絡(luò)的第一個IP , 如: 10.254.0.1, 在啟動完成后,我們使用 kubectl get svc, 就可以查看到。
生成 kubernetes 證書和私鑰
kubelet 首次啟動時向kube-apiserver 發(fā)送 TLS Bootstrapping 請求,kube-apiserver 驗證 kubelet 請求中的 token 是否與它配置的 token 一致,如果一致則自動為 kubelet生成證書和秘鑰。
# 生成 token(注意此處的token在生成node節(jié)點kubelet需要的證書時也會用到,要注意不要寫錯或重新生成別的)
[root@mimo222 ~]# head -c 16 /dev/urandom | od -An -t x | tr -d ' '
3140a1541451afcc87ca7b715f124ce3
# 創(chuàng)建 token.csv 文件
[root@mimo222 ~]# cd /opt/ssl
[root@mimo222 ~]# vi token.csv
# 填寫以下信息:
3140a1541451afcc87ca7b715f124ce3,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
# 拷貝
cp token.csv /etc/kubernetes/
# 生成高級審核配置文件
[root@mimo222 ~]# cd /etc/kubernetes
cat >> audit-policy.yaml <
創(chuàng)建 kube-apiserver.service 文件
- 自定義 系統(tǒng) service 文件一般存于
/etc/systemd/system/下 - 配置為 各自的本地
IP
[root@mimo222 ~]# vi /etc/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
[Service]
User=root
ExecStart=/usr/local/bin/kube-apiserver \
--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,NodeRestriction \ --advertise-address=10.0.11.222 \ --allow-privileged=true \ --apiserver-count=3 \ --audit-policy-file=/etc/kubernetes/audit-policy.yaml \ --audit-log-maxage=30 \ --audit-log-maxbackup=3 \ --audit-log-maxsize=100 \ --audit-log-path=/var/log/kubernetes/audit.log \ --authorization-mode=Node,RBAC \ --anonymous-auth=false \ # 不接受匿名訪問,若為true,則表示接受,此處設(shè)置為false,便于dashboard訪問 --bind-address=0.0.0.0 \ --secure-port=6443 \ --client-ca-file=/etc/kubernetes/ssl/ca.pem \ --enable-swagger-ui=true \ --etcd-cafile=/etc/kubernetes/ssl/ca.pem \ --etcd-certfile=/etc/kubernetes/ssl/etcd.pem \ --etcd-keyfile=/etc/kubernetes/ssl/etcd-key.pem \ --etcd-servers=https://10.0.11.222:2379 \ --event-ttl=1h \ --kubelet-https=true \ --insecure-bind-address=127.0.0.1 \ --insecure-port=8080 \ --service-account-key-file=/etc/kubernetes/ssl/ca-key.pem \ --service-cluster-ip-range=10.254.0.0/16 \ --service-node-port-range=30000-32000 \ --tls-cert-file=/etc/kubernetes/ssl/kubernetes.pem \ --tls-private-key-file=/etc/kubernetes/ssl/kubernetes-key.pem \ --enable-bootstrap-token-auth \ --token-auth-file=/etc/kubernetes/token.csv \ --v=2 Restart=on-failure
RestartSec=5
Type=notify
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
-
--advertise-address:master節(jié)點本機IP -
--etcd-servers:etcd URL:etcd集群需要寫上所有etcd節(jié)點 URL -
--service-node-port-range=30000-32000:這個地方是 映射外部端口時 的端口范圍,隨機映射也在這個范圍內(nèi)映射,指定映射端口必須也在這個范圍內(nèi)。 -
注意驗證證書等路徑是否正確。
啟動 kube-apiserver
[root@mimo222 ~]# systemctl daemon-reload
[root@mimo222 ~]# systemctl enable kube-apiserver
[root@mimo222 ~]# systemctl start kube-apiserver
[root@mimo222 ~]# systemctl status kube-apiserver
配置 kube-controller-manager
創(chuàng)建 kube-controller-manager.service文件
[root@mimo222 ~]# vi /etc/systemd/system/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
ExecStart=/usr/local/bin/kube-controller-manager \
--address=0.0.0.0 \ --master=http://127.0.0.1:8080 \ --allocate-node-cidrs=true \ --service-cluster-ip-range=10.254.0.0/16 \ --cluster-cidr=10.233.0.0/16 \ --cluster-name=kubernetes \ --cluster-signing-cert-file=/etc/kubernetes/ssl/ca.pem \ --cluster-signing-key-file=/etc/kubernetes/ssl/ca-key.pem \ --service-account-private-key-file=/etc/kubernetes/ssl/ca-key.pem \ --root-ca-file=/etc/kubernetes/ssl/ca.pem \ --leader-elect=true \ --v=2 Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
啟動 kube-controller-manager
[root@mimo222 ~]# systemctl daemon-reload
[root@mimo222 ~]# systemctl enable kube-controller-manager
[root@mimo222 ~]# systemctl start kube-controller-manager
[root@mimo222 ~]# systemctl status kube-controller-manager
配置 kube-scheduler
創(chuàng)建 kube-cheduler.service 文件
[root@mimo222 ~]# vi /etc/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
ExecStart=/usr/local/bin/kube-scheduler \
--address=0.0.0.0 \ --master=http://127.0.0.1:8080 \ --leader-elect=true \ --v=2 Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
啟動 kube-scheduler
[root@mimo222 ~]# systemctl daemon-reload
[root@mimo222 ~]# systemctl enable kube-scheduler
[root@mimo222 ~]# systemctl start kube-scheduler
[root@mimo222 ~]# systemctl status kube-scheduler
驗證 Master 節(jié)點
[root@mimo222 ssl]# kubectl get componentstatuses
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health": "true"}
# 由于還沒有加入node節(jié)點,所有查詢node時為空。
[root@mimo222 ssl]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
flannel安裝配置
kubernetes要求集群內(nèi)各節(jié)點能通過Pod網(wǎng)段互聯(lián)互通,本節(jié)介紹使用Flannel在所有節(jié)點 (Master、Node) 上創(chuàng)建互聯(lián)互通的 Pod 網(wǎng)段的步驟。
創(chuàng)建flannel證書
[root@mimo222 ~]# cd /opt/ssl/
[root@mimo222 ~]# vi flanneld-csr.json
# 添加如下內(nèi)容:
{
"CN": "flanneld",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "ShenZhen",
"L": "ShenZhen",
"O": "k8s",
"OU": "System"
}
]
}
注意:hosts 字段為空。
生成 flanneld 證書和私鑰
[root@mimo222 ~]# cd /opt/ssl
[root@mimo222 ~]# /opt/local/cfssl/cfssl gencert -ca=/opt/ssl/ca.pem \
-ca-key=/opt/ssl/ca-key.pem \ -config=/opt/ssl/config.json \
-profile=kubernetes flanneld-csr.json | /opt/local/cfssl/cfssljson -bare flanneld
# 查看生成信息
[root@mimo222 ~]# ll flannel*
-rw-r--r-- 1 root root 1001 Dec 15 13:59 flanneld.csr
-rw-r--r-- 1 root root 223 Dec 15 13:56 flanneld-csr.json
-rw------- 1 root root 1679 Dec 15 13:59 flanneld-key.pem
-rw-r--r-- 1 root root 1395 Dec 15 13:59 flanneld.pem
# 拷貝
[root@mimo222 ~]# cp flanneld*.pem /etc/kubernetes/ssl/
向etcd寫入集群Pod網(wǎng)段信息
注意:本步驟只需在第一次部署 Flannel 網(wǎng)絡(luò)時執(zhí)行,后續(xù)在其它節(jié)點上部署 Flannel 時無需再寫入該信息!
etcdctl --endpoints=https://10.0.11.222:2379 \
--ca-file=/opt/ssl/ca.pem \ --cert-file=/etc/kubernetes/ssl/flanneld.pem \ --key-file=/etc/kubernetes/ssl/flanneld-key.pem \ set /kubernetes/network/config '{"Network":"10.233.0.0/16"}'
寫入的 Pod 網(wǎng)段({"Network":"10.233.0.0/16"}) 必須與 kube-controller-manager 的 --cluster-cidr 選項值一致;
安裝和配置flanneld
下載 flanneld
[root@mimo222 ~]# mkdir /tnp/flannel
[root@mimo222 ~]# cd /tmp/flannel
[root@mimo222 ~]# wget https://github.com/coreos/flannel/releases/download/v0.7.1/flannel-v0.7.1-linux-amd64.tar.gz
[root@mimo222 ~]# tar -xzvf flannel-v0.7.1-linux-amd64.tar.gz
[root@mimo222 ~]# cp {flanneld,mk-docker-opts.sh} /usr/local/bin
創(chuàng)建啟動文件flanneld.service
[root@mimo222 ~]# vi /etc/systemd/system/flanneld.service
# 添加以下信息:
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service
[Service]
Type=notify
ExecStart=/usr/local/bin/flanneld \\
-etcd-cafile=/etc/kubernetes/ssl/ca.pem \\ -etcd-certfile=/etc/flanneld/ssl/flanneld.pem \\ -etcd-keyfile=/etc/flanneld/ssl/flanneld-key.pem \\ -etcd-endpoints=https://10.0.11.222:2379 \\ -etcd-prefix=/kubernetes/network ExecStartPost=/usr/local/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
-
-etcd-endpoints:填寫etcd配置的URL,注意使用https。 -
-etcd-prefix:上面第一步設(shè)置的Pod網(wǎng)段key前綴。我設(shè)置的key為/kubernetes/network/config,因此前綴為/kubernetes/network。 -
注意CA驗證證書的路徑是否正確。
啟動 flanneld
[root@mimo222 ~]# systemctl daemon-reload
[root@mimo222 ~]# systemctl enable flanneld
[root@mimo222 ~]# systemctl start flanneld
[root@mimo222 ~]# systemctl status flanneld
etcd中flannel網(wǎng)段信息查詢
對于以下命令,--endpoints參數(shù)后跟的是etcd集群IP:PORT(多個etcd節(jié)點需填多個IP:PORT),/kubernetes/network是我這里設(shè)置的FLANNEL_ETCD_PREFIX,因此大家可根據(jù)自己設(shè)置的flannel etcd 前綴來填寫。--ca-file、--cert-file、--key-file是指相應(yīng)flannel證書路徑,若沒有采用CA驗證,則不需要。
下面的命令僅是我這里用的一些命令例子,其中參數(shù)需要根據(jù)自己需要修改一下。
查看ETCD中flannel集群 Pod 網(wǎng)段
etcdctl --endpoints=https://10.0.11.222:2379 \
--ca-file=/opt/ssl/ca.pem \ --cert-file=/etc/kubernetes/ssl/flanneld.pem \ --key-file=/etc/kubernetes/ssl/flanneld-key.pem \ get /kubernetes/network/config
{"Network":"10.233.0.0/16"}
查看已分配的 Pod 子網(wǎng)段列表
etcdctl --endpoints=https://10.0.11.222:2379 \
--ca-file=/opt/ssl/ca.pem \ --cert-file=/etc/kubernetes/ssl/flanneld.pem \ --key-file=/etc/kubernetes/ssl/flanneld-key.pem \ ls /kubernetes/network/subnets
/kubernetes/network/subnets/10.233.50.0-24
/kubernetes/network/subnets/10.233.86.0-24
查看某一 Pod 網(wǎng)段對應(yīng)的 flanneld 進(jìn)程監(jiān)聽的 IP 和網(wǎng)絡(luò)參數(shù)
etcdctl --endpoints=https://10.0.11.222:2379 \
--ca-file=/opt/ssl/ca.pem \ --cert-file=/etc/kubernetes/ssl/flanneld.pem \ --key-file=/etc/kubernetes/ssl/flanneld-key.pem \ get /kubernetes/network/subnets/10.233.50.0-24
{"PublicIP":"10.0.11.221"}
確保各節(jié)點間 Pod 網(wǎng)段能互聯(lián)互通
在各節(jié)點上部署完 Flannel 后,根據(jù)上面命令查看已分配的 Pod 子網(wǎng)段列表(此處是我分配的網(wǎng)段列表):
/kubernetes/network/subnets/10.233.50.0-24
/kubernetes/network/subnets/10.233.86.0-24
在各節(jié)點上分配 ping 這兩個網(wǎng)段的網(wǎng)關(guān)地址,確保能通:
ping 10.233.50.1
ping 10.233.86.1
Kubernetes Node節(jié)點安裝配置
kubernetes node節(jié)點需要安裝kubelet、kube-proxy、flannel。下面的配置步驟,指明在master節(jié)點執(zhí)行的需要在master節(jié)點執(zhí)行,沒有指明的在node節(jié)點執(zhí)行。
配置 kubelet(Master節(jié)點執(zhí)行)
kubelet 啟動時向 kube-apiserver 發(fā)送 TLS bootstrapping 請求,需要先將 bootstrap token文件中的 kubelet-bootstrap 用戶賦予 system:node-bootstrapper 角色,然后 kubelet才有權(quán)限創(chuàng)建認(rèn)證請求(certificatesigningrequests)。
# 先創(chuàng)建認(rèn)證請求
# user 為 master 中 token.csv 文件里配置的用戶
# 只需創(chuàng)建一次就可以
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
創(chuàng)建 kubelet kubeconfig 文件(Master節(jié)點執(zhí)行)
# 配置集群(server要寫master ip地址,不要使用127.0.0.1或localhost,否則node節(jié)點無法識別)
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \ --embed-certs=true \ --server=https://10.0.11.222:6443 \ --kubeconfig=bootstrap.kubeconfig
# 配置客戶端認(rèn)證(此處的token使用token.csv中的token)
kubectl config set-credentials kubelet-bootstrap \
--token=3140a1541451afcc87ca7b715f124ce3 \ --kubeconfig=bootstrap.kubeconfig
# 配置關(guān)聯(lián)
kubectl config set-context default \
--cluster=kubernetes \ --user=kubelet-bootstrap \ --kubeconfig=bootstrap.kubeconfig
# 配置默認(rèn)關(guān)聯(lián)
kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
# 拷貝生成的 bootstrap.kubeconfig 文件
mv bootstrap.kubeconfig /etc/kubernetes/
配置 kube-proxy(Master節(jié)點執(zhí)行)
創(chuàng)建 kube-proxy 證書(Master節(jié)點執(zhí)行)
[root@mimo222 ~]# cd /opt/ssl
[root@mimo222 ~]# vi kube-proxy-csr.json
{
"CN": "system:kube-proxy",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "TianJin",
"L": "TianJin",
"O": "k8s",
"OU": "System"
}
]
}
生成 kube-proxy 證書和私鑰(Master節(jié)點執(zhí)行)
/opt/local/cfssl/cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \
-ca-key=/etc/kubernetes/ssl/ca-key.pem \ -config=/opt/ssl/config.json \ -profile=kubernetes kube-proxy-csr.json | /opt/local/cfssl/cfssljson -bare kube-proxy
# 查看生成
[root@mimo222 ssl]# ll kube-proxy*
-rw-r--r-- 1 root root 1013 Dec 14 20:09 kube-proxy.csr -rw-r--r-- 1 root root 232 Dec 14 20:09 kube-proxy-csr.json -rw------- 1 root root 1679 Dec 14 20:09 kube-proxy-key.pem -rw-r--r-- 1 root root 1407 Dec 14 20:09 kube-proxy.pem
# 拷貝到目錄
cp kube-proxy*.pem /etc/kubernetes/ssl/
創(chuàng)建 kube-proxy kubeconfig 文件(Master節(jié)點執(zhí)行)
# 配置集群(server要寫master ip地址,不要使用127.0.0.1或localhost,否則node節(jié)點無法識別)
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \ --embed-certs=true \ --server=https://10.0.11.222:6443 \ --kubeconfig=kube-proxy.kubeconfig
# 配置客戶端認(rèn)證(注意證書路徑)
kubectl config set-credentials kube-proxy \
--client-certificate=/etc/kubernetes/ssl/kube-proxy.pem \ --client-key=/etc/kubernetes/ssl/kube-proxy-key.pem \ --embed-certs=true \ --kubeconfig=kube-proxy.kubeconfig
# 配置關(guān)聯(lián)
kubectl config set-context default \
--cluster=kubernetes \ --user=kube-proxy \ --kubeconfig=kube-proxy.kubeconfig
# 配置默認(rèn)關(guān)聯(lián)
kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
# 拷貝到目錄
mv kube-proxy.kubeconfig /etc/kubernetes/
從master節(jié)點拷貝證書
所有需要的證書生成最好都在master節(jié)點進(jìn)行生成,然后統(tǒng)一管理,node節(jié)點需要哪些,直接從master拷貝即可。
[root@mimo222 ~]# mkdir -p /etc/kubernetes/ssl/
[root@mimo222 ~]# cd /etc/kubernetes/
# kubelet kubeconfig 文件
[root@mimo222 ~]# scp 10.0.11.222:/etc/kubernetes/bootstrap.kubeconfig ./
# kube-proxy kubeconfig 文件
[root@mimo222 ~]# scp 10.0.11.222:/etc/kubernetes/kube-proxy.kubeconfig ./
[root@mimo222 ~]# cd /etc/kubernetes/ssl
# kubernetes相關(guān)證書
[root@mimo222 ~]# scp 10.0.11.222:/etc/kubernetes/ssl/ca.pem ./
[root@mimo222 ~]# scp 10.0.11.222:/etc/kubernetes/ssl/kube-proxy.pem ./
[root@mimo222 ~]# scp 10.0.11.222:/etc/kubernetes/ssl/kube-proxy-key.pem ./
# flannel證書
[root@mimo222 ~]# scp 10.0.11.222:/etc/kubernetes/ssl/flanneld-key.pem ./
[root@mimo222 ~]# scp 10.0.11.222:/etc/kubernetes/ssl/flanneld.pem ./
node節(jié)點flannel配置
下載 flanneld
[root@mimo222 ~]# mkdir /tnp/flannel
[root@mimo222 ~]# cd /tmp/flannel
[root@mimo222 ~]# wget https://github.com/coreos/flannel/releases/download/v0.7.1/flannel-v0.7.1-linux-amd64.tar.gz
[root@mimo222 ~]# tar -xzvf flannel-v0.7.1-linux-amd64.tar.gz
[root@mimo222 ~]# cp {flanneld,mk-docker-opts.sh} /usr/local/bin
配置并啟動flanneld
創(chuàng)建啟動文件flanneld.service:
[root@mimo222 ~]# vi /etc/systemd/system/flanneld.service
# 添加以下信息:
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service
[Service]
Type=notify
ExecStart=/usr/local/bin/flanneld \\
-etcd-cafile=/etc/kubernetes/ssl/ca.pem \\ -etcd-certfile=/etc/flanneld/ssl/flanneld.pem \\ -etcd-keyfile=/etc/flanneld/ssl/flanneld-key.pem \\ -etcd-endpoints=https://10.0.11.222:2379 \\ -etcd-prefix=/kubernetes/network ExecStartPost=/usr/local/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
-
-etcd-endpoints:填寫etcd配置的URL,注意使用https。 -
-etcd-prefix:上面第一步設(shè)置的Pod網(wǎng)段key前綴。我設(shè)置的key為/kubernetes/network/config,因此前綴為/kubernetes/network。 -
注意
CA驗證證書的路徑是否正確。
啟動 flanneld:
[root@mimo222 ~]# systemctl daemon-reload
[root@mimo222 ~]# systemctl enable flanneld
[root@mimo222 ~]# systemctl start flanneld
[root@mimo222 ~]# systemctl status flanneld
安裝kubelet、kube-proxy
[root@mimo222 ~]# cd /tmp/kubernetes
# master節(jié)點安裝時使用過這個文件,拷到node節(jié)點即可
[root@mimo222 ~]# wget https://dl.k8s.io/v1.8.3/kubernetes-server-linux-amd64.tar.gz
[root@mimo222 ~]# tar -xzvf kubernetes-server-linux-amd64.tar.gz
[root@mimo222 ~]# cd kubernetes
[root@mimo222 ~]# cp -r server/bin/{kube-proxy,kubelet} /usr/local/bin/
配置 kubelet.service 文件
[root@mimo222 ~]# mkdir /var/lib/kubelet
[root@mimo222 ~]# vi /etc/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/var/lib/kubelet
ExecStart=/usr/local/bin/kubelet \
--cgroup-driver=cgroupfs \ --address=10.0.11.221 \ --hostname-override=10.0.11.221 \ --pod-infra-container-image=jicki/pause-amd64:3.0 \ --experimental-bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig \ --kubeconfig=/etc/kubernetes/kubelet.kubeconfig \ --cert-dir=/etc/kubernetes/ssl \ --cluster_dns=10.254.0.2 \ --cluster_domain=cluster.local. \ --hairpin-mode promiscuous-bridge \ --allow-privileged=true \ --fail-swap-on=false \ --serialize-image-pulls=false \ --logtostderr=true \ --max-pods=512 \ --v=2
[Install]
WantedBy=multi-user.target
-
--pod-infra-container-image:該項配置的是pod啟動時需要一塊啟動的pod-infrastructure鏡像,真實使用時最好將該文件下載到本地私有庫,然后將該項配置成私有庫的pod-infrastructure鏡像下載地址。 -
--kubeconfig:kubelet啟動成功之后自動生成的kubelet.kubeconfig文件保存路徑。
啟動 kubelet
[root@mimo222 ~]# systemctl daemon-reload
[root@mimo222 ~]# systemctl enable kubelet
[root@mimo222 ~]# systemctl start kubelet
[root@mimo222 ~]# systemctl status kubelet
# 如果報錯 請使用
journalctl -f -t kubelet 和 journalctl -u kubelet 來定位問題
配置 TLS 認(rèn)證(Master節(jié)點執(zhí)行)
# 查看 csr 的名稱
[root@mimo222 ~]# kubectl get csr
NAME AGE REQUESTOR CONDITION
node-csr-A9WKNWyqyq89XOwg-uqCu2C4fBQEhOhzmlQJ6f8VPWE 22h kubelet-bootstrap Approved,Issued
node-csr-J1W94p6S2w0fjTkvpdfG0J-lRY-dmkVFH01OG3R6T4Y 3h kubelet-bootstrap Approved,Issued
node-csr-aVIfz5k6GX5jy31z43ZkhxzzLfkFtMUoAkJTi1Okcx8 3h kubelet-bootstrap Pending
# 若CONDITION顯示為Pending,可增加認(rèn)證
# 下面的語句是將所有Pending狀態(tài)的csr設(shè)置已認(rèn)證
kubectl get csr | grep Pending | awk '{print $1}' | xargs kubectl certificate approve
驗證 nodes(Master節(jié)點執(zhí)行)
kubectl get nodes
NAME STATUS ROLES AGE VERSION
10.0.11.221 Ready 3h v1.8.3
node節(jié)點驗證
kubelet啟動成功之后,會請求apiserver,通過驗證,node節(jié)點本地機器會自動生成配置文件與密鑰,查看/etc/kubernetes
[root@mimo221 kubernetes]# ll
-rw-------. 1 root root 2195 Dec 15 10:27 bootstrap.kubeconfig
-rw-------. 1 root root 2286 Dec 15 15:43 kubelet.kubeconfig
-rw-------. 1 root root 6305 Dec 15 10:28 kube-proxy.kubeconfig
drwxr-xr-x. 2 root root 202 Dec 15 15:43 ssl
[root@mimo221 kubernetes]# ll ssl |grep kubelet
-rw-r--r--. 1 root root 1046 Dec 15 15:43 kubelet-client.crt
-rw-------. 1 root root 227 Dec 15 15:38 kubelet-client.key
-rw-r--r--. 1 root root 1111 Dec 15 15:38 kubelet.crt
-rw-------. 1 root root 1675 Dec 15 15:38 kubelet.key
配置kube-proxy.service 文件
[root@mimo221 kubernetes]# mkdir -p /var/lib/kube-proxy
[root@mimo221 kubernetes]# vi /etc/systemd/system/kube-proxy.service
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
[Service]
WorkingDirectory=/var/lib/kube-proxy
ExecStart=/usr/local/bin/kube-proxy \
--bind-address=10.0.11.222 \ --hostname-override=k8s-master-64 \ --cluster-cidr=10.254.0.0/16 \ --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig \ --logtostderr=true \ --v=2 Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
啟動 kube-proxy
[root@mimo221 kubernetes]# systemctl daemon-reload
[root@mimo221 kubernetes]# systemctl enable kube-proxy
[root@mimo221 kubernetes]# systemctl start kube-proxy
[root@mimo221 kubernetes]# systemctl status kube-proxy
# 如果報錯 請使用
journalctl -f -t kube-proxy 和 journalctl -u kube-proxy 來定位問題
到此如果都沒有報錯的話,說明kubernetes1.8.3集群安裝成功了。
本文標(biāo)題:CentOS7.3下DockerKubernetes1.8.3集群環(huán)境搭建
當(dāng)前URL:http://fisionsoft.com.cn/article/ccspccc.html


咨詢
建站咨詢
