1.1 集群部署

1.1.1 原理

LoadBanlance->Service->Node->Pod->Container

1.1.2 集群规划

b4e5dcd032a5b0da2b1c73b78fd5bd09.png

1.1.3 Master节点配置

安装软件参考:单点配置

查看节点信息:kubectl get nodes

1.1.3.1 配置apiserver

KUBE_API_ADDRESS="--address=0.0.0.0"

KUBE_API_PORT="--port=8080"

KUBELET_PORT="--kubelet_port=10250"

KUBE_ETCD_SERVERS="--etcd_servers=http://127.0.0.1:2379"

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

KUBE_API_ARGS=""

1.1.3.2 配置etcd:/etc/etcd/etcd.conf

设置监听子节点端口ETCD_LISTEN_PEER_URLS,服务端口ETCD_LISTEN_CLIENT_URLS

设置对外广播本节点端口ETCD_INITIAL_ADVERTISE_PEER_URLS,对外服务端口ETCD_ADVERTISE_CLIENT_URLS,初始化节点列表ETCD_INITIAL_CLUSTER(所有节点全部启动后才能正常服务),初始化集群名称:ETCD_INITIAL_CLUSTER_TOKEN,初始化集群状态ETCD_INITIAL_CLUSTER_STATE(第一次启动为new)。

#[Member]

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_NAME="master"

#[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.75.195:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.75.195:2379"

ETCD_INITIAL_CLUSTER="master=http://192.168.75.195:2380,etcd01=http://192.168.71.2:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-k8s"

ETCD_INITIAL_CLUSTER_STATE="new"

启动服务(节点一样,谁先启动,谁是master):systemctl start etcd

查看节点:etcdctl member list

ce270a4e2b9abc6b9d7153fdeef46cc0.png

增加节点:etcdctl member add 名称 url

删除节点:etcdctl member remove {$memberID}

1.1.3.3 安装flannel

yum install flannel –y

1.1.3.4 配置flannel

etcdctl mk /atomic.io/network/config '{ "Network": "172.16.0.0/16" }'

1.1.3.5 重启服务

systemctl restart docker etcd kube-apiserver kube-controller-manager kube-scheduler kubelet kube-proxy flanneld

1.1.4 Node节点配置

1.1.4.1 安装软件

yum install docker -y

yum install kubernetes -y

yum install flannel –y

1.1.4.2 安装证书:将服务器的证书文件copy到node中

scp /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt root@192.168.71.2:/etc/docker/certs.d/registry.access.redhat.com/

证书用于验证集群中的节点的相互认证和加密传输,可以自行签发。使用openssl或cfssl等工具。

1.1.4.3 设置ETCD:/etc/etcd/etcd.conf

设置监听子节点端口ETCD_LISTEN_PEER_URLS,服务端口ETCD_LISTEN_CLIENT_URLS

设置对外广播本节点端口ETCD_INITIAL_ADVERTISE_PEER_URLS,对外服务端口ETCD_ADVERTISE_CLIENT_URLS,初始化节点列表ETCD_INITIAL_CLUSTER(所有节点全部启动后才能正常服务),初始化集群名称:ETCD_INITIAL_CLUSTER_TOKEN,初始化集群状态ETCD_INITIAL_CLUSTER_STATE(第一次启动为new)。

#[Member]

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"

ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379

ETCD_NAME="etcd01"

#[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.71.2:2380"

ETCD_ADVERTISE_CLIENT_URLS=http://192.168.71.2:2379

ETCD_INITIAL_CLUSTER="master=http://192.168.75.195:2380,etcd01=http://192.168.71.2:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-k8s"

ETCD_INITIAL_CLUSTER_STATE="new"

1.1.4.4 设置master

vi /etc/kubernetes/config

KUBE_MASTER="--master=http://192.168.75.195:8080"

1.1.4.5 设置ApiServer

vi /etc/kubernetes/kubelet

KUBELET_ADDRESS="--address=0.0.0.0"

KUBELET_HOSTNAME="--hostname-override=192.168.71.2"

KUBELET_API_SERVER="--api-servers=http://192.168.75.195:8080"

1.1.4.6 设置flanneld

vi /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS=http://192.168.75.195:2379

1.1.5 运行服务

systemctl restart docker kubelet kube-proxy flanneld

1.1.6 运行容器

kubectl run my-nginx-deployment2 --replicas=5 --image=nginx --port=80

kubectl expose deployment/my-nginx-deployment2 --type="NodePort" --port=80 --target-port=80

查看pods

5bb5567b41a21a24acd2a1e257678ce1.png

使用describe查看,可以看到5个pod分布在两台机器上。

查看端口

f0a1aca3bcab0bd486196aeaea047c52.png

访问测试

6284d71c4639cf1609f71f06813aa313.png

1.1.7 负载均衡

内部使用kube-proxy进行负载均衡。也可是Ingress进行更多控制。

1.1.8 应用:创建2个服务,分别指定外部服务端口和ip地址

192.168.71.2:8081 nginx

192.168.71.2:8022 ssh

1.2 安全管理

可以使用SSL工具openssl或cfssl进行签名发送各节点证书进行相互验证。

1.3 Web管理界面DashBoard

使用对应版本的dashboard安装。

1.4 卸载清理k8s

systemctl stop etcd kube-apiserver kube-controller-manager kube-scheduler kubelet kube-proxy flanneld

yum remove etcd kubernetes flannel

rm -rf ~/.kube/

rm -rf /etc/kubernetes/

rm -rf /etc/systemd/system/kubelet.service.d

rm -rf /etc/systemd/system/kubelet.service

rm -rf /usr/bin/kube*

rm -rf /etc/cni

rm -rf /opt/cni

rm -rf /var/lib/etcd

rm -rf /var/etcd

1.5 安装kubeadm

/etc/yum.repos.d目录下

修改:kubenetes.repo

[kubernetes]

name=Kubernetes Repo

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

gpgcheck=1 #开启gpg校验

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

enabled=1

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐