官方提供的幾種Kubernetes部署方式
方式一:minikube
Minikube是一個工具,可以在本地快速運行一個單點的Kubernetes,嘗試Kubernetes或日常開發的用戶使用。不能用於生產環境。
官方地址:https://kubernetes.io/docs/setup/minikube/
方式二:kubeadm
Kubeadm也是一個工具,提供kubeadm init和kubeadm join,用於快速部署Kubernetes集羣。
官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
方式三:二進制包
從官方下載發行版的二進制包,手動部署每個組件,組成Kubernetes集羣。
總結:
生產環境中部署Kubernetes集羣,只有Kubeadm和二進制包可選,Kubeadm降低部署門檻,但屏蔽了很多細節,遇到問題很難排查。我們這裏使用二進制包部署Kubernetes集羣,我也是推薦大家使用這種方式,雖然手動部署麻煩點,但學習很多工作原理,更有利於後期維護。
實驗環境
系統版本:centos7x7.6.1810x86_64
Kubernetes版本:v1.13
Kubernetes-node版本:v1.13
Docker版本:docker-ce.x86_64 0:18.03.1.ce-1.el7.centos
注:以上最好兩個均採用當前最新穩定版本。
關閉防火牆並禁止開機自啓
systemctl stop firewalld.service
systemctl disable firewalld
關閉selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
關閉swap
#swapoff –a 臨時關閉
#vi /etc/fstab 永久關閉
重啓 reboot
服務器角色
主機名規劃
1、設置主機名
cat /etc/hostname
master
2、映射主機IP
cat /etc/hosts
192.168.150.101 master
192.168.150.104 node1
192.168.150.105 node2
注:node節點同樣操作即可,切記主機名要修改爲node。
服務器架構
創建etcd證書
1、下載cfssl工具
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
注:使用cfssl來生成自簽證書。
2、設置cfssl工具執行權限
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
3、移動cfssl工具到指定位置
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
4、創建etcd證書文件
注:以下創建的文件不要多此一舉每臺節點都創建,只需要在主節點創建即可!本人踩過坑,在每臺節點生成一遍,後邊連接etcd集羣會報錯證書問題。
第一步創建認證文件
cat ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"www": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
第二步創建認證機構
cat ca-csr.json
{
"CN": "etcd CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
第三步創建服務器認證機構
cat server-csr.json
{
"CN": "etcd",
"hosts": [
"192.168.150.101",
"192.168.150.104",
"192.168.150.105"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
5、生成證書
第一步生成ca證書
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
第二步生成服務器證書
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server
注:以上命令都是在證書文件在當前路徑下的前提,不然需要指定絕對路徑。
部署etcd集羣
1、規劃etcd
注:以下四步需要在etcd所有節點都執行。
1)下載etcd二進制包
wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz
注:如果網絡打不開鏈接:https://pan.baidu.com/s/1HWwIQT-j5u7g-UDtODvWqw 提取碼:gg5m
2)創建etcd的文件目錄
mkdir /opt/etcd/{bin,cfg,ssl} -p
3)解壓etcd二進制包
tar zxvf etcd-v3.3.10-linux-amd64.tar.gz
4)將etcd主要配置文件移動到規劃目錄
mv etcd-v3.3.10-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/
2、創建etcd配置文件
注:以下配置文件需要在etcd所有節點都執行但是一定要記得修改IP。
cat /opt/etcd/cfg/etcd
#[Member]
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.150.101:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.150.101:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.150.101:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.150.101:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.150.101:2380,etcd02=https://192.168.150.104:2380,etcd03=https://192.168.150.105:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
註釋:
3、創建etcd啓動文件
注:以下配置文件需要在etcd所有節點都執行。
cat /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/opt/etcd/cfg/etcd
ExecStart=/opt/etcd/bin/etcd \
--name=${ETCD_NAME} \
--data-dir=${ETCD_DATA_DIR} \
--listen-peer-urls=${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls=${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster-state=new \
--cert-file=/opt/etcd/ssl/server.pem \
--key-file=/opt/etcd/ssl/server-key.pem \
--peer-cert-file=/opt/etcd/ssl/server.pem \
--peer-key-file=/opt/etcd/ssl/server-key.pem \
--trusted-ca-file=/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file=/opt/etcd/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
4、拷貝證書到指定位置
cp ca*pem server*pem /opt/etcd/ssl
scp ca*pem server*pem [email protected]: /opt/etcd/ssl
scp ca*pem server*pem [email protected]: /opt/etcd/ssl
注:同時使用scp命令將這些證書也拷貝到etcd其他節點同一位置,如上後兩條命令。
5、啓動並設置開啓啓動
systemctl start etcd && systemctl enable etcd
注:當啓動第一臺的時候會卡住不動,這屬於etcd集羣等待尋找的正常情況,當同時啓動第二臺節點會同時都執行成功。
6、etcd環境變量
1)設置etcd全局環境變量
echo "PATH=$PATH:/opt/etcd/bin/" >>/etc/profile
2)環境變量生效
source /etc/profile
注:設置etcd變量操作主要爲了方便以後直接在全局使用etcd命令,所以需要在所有etcd節點執行。
7、檢查etcd集羣狀態
etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.150.101:2379,https://192.168.150.104:2379,https://192.168.150.105:2379" cluster-health
注:在使用以上命令時切記對應證書的絕對路徑,否則會報找不到證書的錯誤。
注:如果出現以上截圖輸出信息,說明etcd集羣部署成功。如果有問題第一步先看日誌:/var/log/message 或 journalctl -u etcd
部署docker
注:只需要在node節點安裝docker。
1、安裝docker依賴文件
yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加docker源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、安裝docker
yum -y install docker-ce
4、添加國內鏡像倉庫
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://bc437cce.m.daocloud.io
5、啓動docker並設置開機自啓
systemctl start docker && systemctl enable docker
部署Flannel網絡
1、寫入預定義子網段
etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.150.101:2379,https://192.168.150.104:2379,https://192.168.150.105:2379" set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'
注:在master節點執行以上命令,切記如果多個master都需要執行。
2、部署node節點flannel網絡
注:在所有node節點執行一下所有命令。
1)下載flannel
wget https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz
注:如果網絡打不開鏈接:https://pan.baidu.com/s/1HWwIQT-j5u7g-UDtODvWqw <br/>提取碼:gg5m
2)解壓
tar zxvf flannel-v0.10.0-linux-amd64.tar.gz
3)創建flannel規劃目錄
mkdir -p /opt/flannel/{bin,cfg}
4)將指定文件移動到規劃目錄
mv flanneld mk-docker-opts.sh /opt/flannel/bin/
3、創建flannel配置文件
注:在所有node節點執行一下所有命令。
cat /opt/flannel/cfg/flanneld
FLANNEL_OPTIONS="--etcd-endpoints=https://192.168.150.101:2379,https://192.168.150.104:2379,https://192.168.150.105:2379 -etcd-cafile=/opt/etcd/ssl/ca.pem -etcd-certfile=/opt/etcd/ssl/server.pem -etcd-keyfile=/opt/etcd/ssl/server-key.pem"
4、創建flannel啓動服務
注:在所有node節點執行一下所有命令。
cat /usr/lib/systemd/system/flanneld.service
[Unit]
Description=Flanneld overlay address etcd agent
After=network-online.target network.target
Before=docker.service
[Service]
Type=notify
EnvironmentFile=/opt/flannel/cfg/flanneld
ExecStart=/opt/flannel/bin/flanneld --ip-masq $FLANNEL_OPTIONS
ExecStartPost=/opt/flannel/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env
Restart=on-failure
[Install]
WantedBy=multi-user.target
5、配置Docker啓動指定子網段
注:在所有node節點執行一下所有命令。
cat /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
EnvironmentFile=/run/flannel/subnet.env
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_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
6、啓動flannel
注:在所有node節點執行一下所有命令。
systemctl daemon-reload
systemctl start flanneld
systemctl enable flanneld
systemctl restart docker
7、檢查flannel
注:在所有node節點執行一下所有命令。
1)查看flannel的IP
ip a
2)使用flannel的IP互ping
注:如果如上圖所示表示網絡互通,flannel網絡部署成功!
部署k8s-server端之證書
注:以下執行命令都在master上。
1、創建CA證書
1)第一步創建認證文件
cat ca-config.json
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
2)第二步創建認證機構
cat ca-csr.json
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing",
"O": "k8s",
"OU": "System"
}
]
}
3)第三步生成證書
cfssl gencert -initca ca-csr.json | cfssljson -bare ca –
2、創建apiserver證書
1)創建apiserver認證機構
cat server-csr.json
{
"CN": "kubernetes",
"hosts": [
"10.0.0.1",
"127.0.0.1",
"192.168.150.101",
"192.168.150.104",
"192.168.150.105",
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluster.local"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
2)生成apiserver證書
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
3、創建kube-proxy證書
1)創建kube-proxy認證機構
cat kube-proxy-csr.json
{
"CN": "system:kube-proxy",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
2)創建kube-proxy證書
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy
4、查看證書
部署k8s-server端之apiserver組件
1、下載kubernetes二進制包
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md
注:如果網絡打不開鏈接:https://pan.baidu.com/s/1HWwIQT-j5u7g-UDtODvWqw 提取碼:gg5m
2、解壓
tar zxvf kubernetes-server-linux-amd64.tar.gz
3、創建規劃目錄
mkdir -p /opt/kubernetes/{bin,cfg,ssl}
4、拷貝證書
cp server.pem server-key.pem ca.pem ca-key.pem /opt/kubernetes/ssl/
5、移動指定文件到規劃目錄
cp kubernetes/server/bin/kube-apiserver kube-controller-manager kubectl kubelet kube-proxy kube-scheduler /opt/kubernetes/bin/
6、創建token文件
cat /opt/kubernetes/cfg/token.csv
674c457d4dcf2eefe4920d7dbb6b0ddc,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
注:具體token使用和創建方式可以百度,這裏就不詳細介紹了。
7、創建apiserver配置文件
cat /opt/kubernetes/cfg/kube-apiserver
KUBE_APISERVER_OPTS="--logtostderr=true \
--v=4 \
--etcd-servers=https://192.168.150.101:2379,https://192.168.150.104:2379,https://192.168.150.105:2379 \
--bind-address=192.168.150.101 \
--secure-port=6443 \
--advertise-address=192.168.150.101 \
--allow-privileged=true \
--service-cluster-ip-range=10.0.0.0/24 \
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota,NodeRestriction \
--authorization-mode=RBAC,Node \
--enable-bootstrap-token-auth \
--token-auth-file=/opt/kubernetes/cfg/token.csv \
--service-node-port-range=30000-50000 \
--tls-cert-file=/opt/kubernetes/ssl/server.pem \
--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \
--client-ca-file=/opt/kubernetes/ssl/ca.pem \
--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \
--etcd-cafile=/opt/etcd/ssl/ca.pem \
--etcd-certfile=/opt/etcd/ssl/server.pem \
--etcd-keyfile=/opt/etcd/ssl/server-key.pem"
8、創建apiserver啓動文件
cat /usr/lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-apiserver
ExecStart=/opt/kubernetes/bin/kube-apiserver $KUBE_APISERVER_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
9、啓動apiserver
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl restart kube-apiserver
部署k8s-server端之scheduler組件
1、創建scheduler配置文件
cat /opt/kubernetes/cfg/kube-scheduler
KUBE_SCHEDULER_OPTS="--logtostderr=true \
--v=4 \
--master=127.0.0.1:8080 \
--leader-elect"
2、創建scheduler啓動文件
cat /usr/lib/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-scheduler
ExecStart=/opt/kubernetes/bin/kube-scheduler $KUBE_SCHEDULER_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
3、啓動scheduler
systemctl daemon-reload
systemctl enable kube-scheduler
systemctl restart kube-scheduler
部署k8s-server端之controller-manager組件
1、創建controller-manager配置文件
cat /opt/kubernetes/cfg/kube-scheduler
KUBE_SCHEDULER_OPTS="--logtostderr=true \
--v=4 \
--master=127.0.0.1:8080 \
--leader-elect"
2、創建controller-manager啓動文件
cat /usr/lib/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-scheduler
ExecStart=/opt/kubernetes/bin/kube-scheduler $KUBE_SCHEDULER_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
3、啓動controller-manager
systemctl daemon-reload
systemctl enable kube-controller-manager
systemctl restart kube-controller-manager
部署k8s-server端之測試組件
1、設置環境變量
echo "PATH=$PATH:/opt/kubernetes/bin/" >> /etc/profile
source /etc/profile
2、查看當前集羣狀態
kubectl get cs
部署k8s-node1/node2端
1、下載二進制包
注:如果網絡打不開鏈接:https://pan.baidu.com/s/1HWwIQT-j5u7g-UDtODvWqw 提取碼:gg5m
2、創建規劃目錄
mkdir -p /opt/kubernetes/{bin,cfg,ssl}
3、解壓
tar zxvf kubernetes-node-linux-amd64.tar.gz
4、拷貝指定文件到規劃目錄
cp kubernetes/node/bin/* /opt/kubernetes/bin/
5、設置環境變量
echo "PATH=$PATH:/opt/kubernetes/bin/" >> /etc/profile
source /etc/profile
6、將kubelet-bootstrap用戶綁定到系統集羣角色
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
注:這條命令在master上執行。
7、創建kubeconfig文件
注:以下都是在master上執行。
1)創建kubelet bootstrapping kubeconfig
BOOTSTRAP_TOKEN=674c457d4dcf2eefe4920d7dbb6b0ddc KUBE_APISERVER="https://192.168.150.101:6443"
2)設置集羣參數
kubectl config set-cluster kubernetes --certificate-authority=./ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=bootstrap.kubeconfig
3)設置客戶端認證參數
kubectl config set-credentials kubelet-bootstrap --token=${BOOTSTRAP_TOKEN} --kubeconfig=bootstrap.kubeconfig
4)設置上下文參數
kubectl config set-context default --cluster=kubernetes --user=kubelet-bootstrap --kubeconfig=bootstrap.kubeconfig
5)設置默認上下文
kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
6)創建kube-proxy kubeconfig文件
第一步:
kubectl config set-cluster kubernetes --certificate-authority=./ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kube-proxy.kubeconfig
第二步:
kubectl config set-credentials kube-proxy --client-certificate=./kube-proxy.pem --client-key=./kube-proxy-key.pem --embed-certs=true --kubeconfig=kube-proxy.kubeconfig
第三步:
kubectl config set-context default --cluster=kubernetes --user=kube-proxy --kubeconfig=kube-proxy.kubeconfig
第四步:
kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
第五步:
注:將這兩個文件拷貝到Node節點/opt/kubernetes/cfg目錄下。
第六步:
scp bootstrap.kubeconfig kube-proxy.kubeconfig [email protected]:/opt/kubernetes/cfg/
scp bootstrap.kubeconfig kube-proxy.kubeconfig [email protected]:/opt/kubernetes/cfg/
部署k8s-node1/node2端之kubelet組件
1、創建kubelet配置文件
cat /opt/kubernetes/cfg/kubelet
KUBELET_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=192.168.150.104 \
--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \
--config=/opt/kubernetes/cfg/kubelet.config \
--cert-dir=/opt/kubernetes/ssl \
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"
注:在node2上創建時記得修改爲自己的IP。
2、創建kubelet.config文件
cat /opt/kubernetes/cfg/kubelet.config
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
address: 192.168.150.104
port: 10250
readOnlyPort: 10255
cgroupDriver: cgroupfs
clusterDNS: ["10.0.0.2"]
clusterDomain: cluster.local.
failSwapOn: false
authentication:
anonymous:
enabled: true
注:在node2上創建時記得修改爲自己的IP。
3、創建kubelet啓動文件
cat /usr/lib/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/opt/kubernetes/cfg/kubelet
ExecStart=/opt/kubernetes/bin/kubelet $KUBELET_OPTS
Restart=on-failure
KillMode=process
[Install]
WantedBy=multi-user.target
4、啓動kubelet
systemctl daemon-reload
systemctl enable kubelet
systemctl restart kubelet
5、master審批node加入集羣
注:以下都是在master上操作的。
1)查看申請加入集羣的節點
kubectl get csr
2)同意請求的節點加入
kubectl certificate approve node-csr-BXnxQ93UK5Hr1ggXBKgVwvLtYZSNkl-pqmYLhmqW-a8
kubectl certificate approve node-csr-wYihsL1QYL8hvvQ7km3B0uBI37cgWNhrc4EyYCem68U
部署k8s-node1/node2端之kube-proxy組件
1、創建kube-proxy配置文件
cat /opt/kubernetes/cfg/kube-proxy
KUBE_PROXY_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=192.168.150.104 \
--cluster-cidr=10.0.0.0/24 \
--kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig"
注:在node2幾點上創建時記得修改IP。
2、創建kube-proxy啓動文件
cat /usr/lib/systemd/system/kube-proxy.service
[Unit]
Description=Kubernetes Proxy
After=network.target
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-proxy
ExecStart=/opt/kubernetes/bin/kube-proxy $KUBE_PROXY_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
3、啓動kube-proxy
systemctl daemon-reload
systemctl enable kube-proxy
systemctl restart kube-proxy
4、查看node節點加入集羣狀態
kubectl get node
部署k8s完成之測試
1、創建一個Nginx Web
kubectl run nginx --image=nginx --replicas=3
2、指定web的映射端口
kubectl expose deployment nginx --port=88 --target-port=80 --type=NodePort
3、查看pod狀態
kubectl get pods
kubectl get svc
4、瀏覽器訪問測試
地址:http://192.168.150.104:32121/
地址:http://192.168.150.105:32121/注:兩個node節點都可以訪問。