Kubernetes 1.13二進制部署集羣

官方提供的幾種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

服務器角色

Kubernetes 1.13二進制部署集羣

主機名規劃

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。

服務器架構

Kubernetes 1.13二進制部署集羣

創建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"

註釋:
Kubernetes 1.13二進制部署集羣

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

注:在使用以上命令時切記對應證書的絕對路徑,否則會報找不到證書的錯誤。

Kubernetes 1.13二進制部署集羣
注:如果出現以上截圖輸出信息,說明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
Kubernetes 1.13二進制部署集羣

2)使用flannel的IP互ping

Kubernetes 1.13二進制部署集羣
注:如果如上圖所示表示網絡互通,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 –
Kubernetes 1.13二進制部署集羣

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
Kubernetes 1.13二進制部署集羣

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
Kubernetes 1.13二進制部署集羣

4、查看證書

Kubernetes 1.13二進制部署集羣

部署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"
Kubernetes 1.13二進制部署集羣

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
Kubernetes 1.13二進制部署集羣

部署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

第五步:

Kubernetes 1.13二進制部署集羣
注:將這兩個文件拷貝到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
Kubernetes 1.13二進制部署集羣

2)同意請求的節點加入

kubectl certificate approve node-csr-BXnxQ93UK5Hr1ggXBKgVwvLtYZSNkl-pqmYLhmqW-a8

kubectl certificate approve node-csr-wYihsL1QYL8hvvQ7km3B0uBI37cgWNhrc4EyYCem68U

Kubernetes 1.13二進制部署集羣

部署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
Kubernetes 1.13二進制部署集羣

部署k8s完成之測試

1、創建一個Nginx Web

kubectl run nginx --image=nginx --replicas=3
Kubernetes 1.13二進制部署集羣

2、指定web的映射端口

kubectl expose deployment nginx --port=88 --target-port=80 --type=NodePort
Kubernetes 1.13二進制部署集羣

3、查看pod狀態

kubectl get pods
Kubernetes 1.13二進制部署集羣

kubectl get svc
Kubernetes 1.13二進制部署集羣

4、瀏覽器訪問測試

地址:http://192.168.150.104:32121/
地址:http://192.168.150.105:32121/
Kubernetes 1.13二進制部署集羣
Kubernetes 1.13二進制部署集羣
注:兩個node節點都可以訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章