一、kubernetes简介:

          Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

          在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

二、kubernetes特点:

     可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

     可扩展: 模块化,插件化,可挂载,可组合

     自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

三、kubernets部署方式

           1.minikube

                  Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户 使用。不能用于生产环境。

           2.kubeadm

                  kubeadm可帮助你快速部署一套kubernetes集群。kubeadm设计目的为新用户开始尝试kubernetes提供 一种简单的方法。目前是Beta版。

         3.二进制包

                  从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。目前企业生产环境中主要使 用该方式。

四、搭建kubernets容器集群平台

        1.环境需求

k8s-master192.174.1.3
k8s-node1192.174.1.4
k8s-node2192.174.1.5

        2.禁用swap分区,安装docker

关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

关闭selinux
vim  /etc/selinux/config

关闭swap
cat /etc/fstab
swapoff -a

强制关闭swapp
vim /etc/sysctl.conf
vm.swappiness = 0
sysctl -p

安装docker
安装版本不要最新,否则容易软件不匹配,我安装的是docker-ce-18.06.1.ce-3.el7版本
yum -y install docker-ce-18.06.1.ce-3.el7

查看UUID和mac地址是否不一样
cat /sys/class/net/ens33/address
cat /sys/class/dmi/id/product_uuid

设置桥接网络
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
如果报错 需要添加模块
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

       3.安装kubernets(所有都需要安装)

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

setenforce 0
yum install kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
systemctl enable kubelet && systemctl start kubelet

   4.部署镜像(三台都这么做)

#下载镜像
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.0
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.0
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.0
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.17.0
docker pull registry.aliyuncs.com/google_containers/pause:3.1
docker pull registry.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5
#打标签
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.0 k8s.gcr.io/kube-apiserver:v1.17.0
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.0 k8s.gcr.io/kube-controller-manager:v1.17.0
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.0 k8s.gcr.io/kube-scheduler:v1.17.0
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0
docker tag registry.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag registry.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5

#删除原始镜像
docker rmi registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.0
docker rmi registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.0
docker rmi registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.0
docker rmi registry.aliyuncs.com/google_containers/kube-proxy:v1.17.0
docker rmi registry.aliyuncs.com/google_containers/pause:3.1
docker rmi registry.aliyuncs.com/google_containers/etcd:3.4.3-0
docker rmi registry.aliyuncs.com/google_containers/coredns:1.6.5

 5.下载flennel网络镜像并创建网络

docker pull quay.io/coreos/flannel:v0.12.0-amd64
mkdir -p /etc/cni/net.d/

cat <<EOF> /etc/cni/net.d/10-flannel.conf
{
"name";"cbr0",
"type" : "flannel",
"delegate": {
"isDefaultGateway”: true
}
}
 
EOF

mkdir /usr/share/oci-umount/oci-umount.d -p
mkdir /run/flannel/
cat <<EOF> /run/flannel/subnet.env
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.1.0/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
 
EOF

6.master节点做发布

kubeadm init --kubernetes-version=v1.17.0 --apiserver-advertise-address 192.174.1.3 --pod-network-cidr 10.244.0.0/16

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

两台从节点加入群集

kubeadm join 192.174.1.3:6443 --token p3ynz3.v7n1hgt7dpw3n8wm \
    --discovery-token-ca-cert-hash sha256:9e019637a18595294e79490c099b443a54cd318d1b95ff19650f0d330a5883f3

7.添加网络组件flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    

 

8.查看日志

journalctl -f -u kubelet.service

 

Logo

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

更多推荐