K8S installation

Installed in two ways k8s:

  1. The traditional way, using a binary.
    • Advantages: allow us to more clearly the relationship between the components of k8s, scalability, and can be customized
    • Disadvantages: is not conducive to the deployment of novice
  2. Use kubeadm installation
    • Advantages: simple and efficient
    • Cons: Everything is kudeadm deployed tool to help us, poor scalability, can not be customized

The procedures described here kubeadm installation:

1. master:安装kubelet,kubeadm,docker,kubeclt客户端,然后初始化,生成令牌,供node端加入
2. node01:安装kubelet,kubeadm,docker后,join 直接加入集群即可
3. node02:安装kubelet,kubeadm,docker后,join 直接加入集群即可
PS: In the CentOS installation K8S can only be installed on the system Centos7, because the Linux kernel version must be 3.10 or more

master, node machine initialization


Change IP, change the hostname, change hosts, shutdown
##### -----------------master:-------------------

echo "master" > /etc/hostname
cat <<EOF >>  /etc/hosts
192.168.225.151 master
192.168.225.152 node01
192.168.225.153 node02
EOF
sed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.207#g /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i s/UUID/#UUID/g /etc/sysconfig/network-scripts/ifcfg-ens33
reboot


##### -----------------node01:-------------------

echo "node01" > /etc/hostname
cat <<EOF >>  /etc/hosts
192.168.225.151 master
192.168.225.152 node01
192.168.225.153 node02
EOF
sed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.208#g /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i s/UUID/#UUID/g  /etc/sysconfig/network-scripts/ifcfg-ens33
reboot


##### -----------------node02:-------------------

echo "node02" > /etc/hostname
cat <<EOF >>  /etc/hosts
192.168.225.151 master
192.168.225.152 node01
192.168.225.153 node02
EOF
sed -i s#IPADDR=192.168.3.206#IPADDR=192.168.3.209#g /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i s/UUID/#UUID/g /etc/sysconfig/network-scripts/ifcfg-ens33
reboot
master node
# 下载yum源
cd /etc/yum.repos.d/
wget  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker&& systemctl start docker

# kubernetes的yum源
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


# kubelet是k8s的管理工具
# kubeadm是k8s的安装工具
# kubectl是k8s的客户端
# ----V1.13.3版本----
yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3 kubernetes-cni-0.6.0 
# ----V1.15版本------
yum install -y kubelet kubeadm kubectl

# 忽略swap报错
cat <<EOF > /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
EOF

# 更加转发等功能
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 让配置生效
sysctl --system

# 开机自启动kubelet
systemctl enable kubelet


# -----------------1.13.3版本----------------
kubeadm init \
  --apiserver-advertise-address=192.168.225.151 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.13.3 \
  --service-cidr=10.1.0.0/16 \
  --pod-network-cidr=10.2.0.0/16 \
  --service-dns-domain=cluster.local \
  --ignore-preflight-errors=Swap \
  --ignore-preflight-errors=NumCPU

# ----------------1.15.0版本---------------
kubeadm init \
  --apiserver-advertise-address=192.168.3.207 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.15.0 \
  --service-cidr=10.1.0.0/16 \
  --pod-network-cidr=10.2.0.0/16 \
  --service-dns-domain=cluster.local \
  --ignore-preflight-errors=Swap \
  --ignore-preflight-errors=NumCPU



# ----------------------参数说明-------------------------
--apiserver-advertise-address:指定用 Master 的哪个IP地址与 Cluster的其他节点通信。

--service-cidr:指定Service网络的范围,即负载均衡VIP使用的IP地址段。

--pod-network-cidr:指定Pod网络的范围,即Pod的IP地址段。

--image-repository:Kubenetes默认Registries地址是k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中我们可以增加-image-repository参数,默认值是k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。

--kubernetes-version=v1.13.3:指定要安装的版本号。

--ignore-preflight-errors=:忽略运行时的错误,例如上面目前存在[ERROR NumCPU]和[ERROR Swap],忽略这两个报错就是增加--ignore-preflight-errors=NumCPU 和--ignore-preflight-errors=Swap的配置即可


------------------------------kubeadm init干了什么?--------------------
[init]:指定版本进行初始化操作

[preflight] :初始化前的检查和下载所需要的Docker镜像文件

[kubelet-start] :生成kubelet的配置文件”/var/lib/kubelet/config.yaml”,没有这个文件kubelet无法启动,所以初始化之前的kubelet实际上启动失败。

[certificates]:生成Kubernetes使用的证书,存放在/etc/kubernetes/pki目录中。

[kubeconfig] :生成 KubeConfig 文件,存放在/etc/kubernetes目录中,组件之间通信需要使用对应文件。

[control-plane]:使用/etc/kubernetes/manifest目录下的YAML文件,安装 Master 组件。

[etcd]:使用/etc/kubernetes/manifest/etcd.yaml安装Etcd服务。

[wait-control-plane]:等待control-plan部署的Master组件启动。

[apiclient]:检查Master组件服务状态。

[uploadconfig]:更新配置

[kubelet]:使用configMap配置kubelet。

[patchnode]:更新CNI信息到Node上,通过注释的方式记录。

[mark-control-plane]:为当前节点打标签,打了角色Master,和不可调度标签,这样默认就不会使用Master节点来运行Pod。

[bootstrap-token]:生成token记录下来,后边使用kubeadm join往集群中添加节点时会用到

[addons]:安装附加组件CoreDNS和kube-proxy



# 系统提示步骤
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

# 打通网络
cd ~
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

[github地址](https://github.com/coreos/flannel)

# 创建密钥
kubeadm token create --print-join-command
node node
# 安装docker的yum源
cd /etc/yum.repos.d/
wget  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker&& systemctl start docker

# 写入k8s的yum源
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

# 下载k8s的组件
----V1.13.3版本----
yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3 kubernetes-cni-0.6.0 
----V1.15版本------
yum install -y kubelet kubeadm kubectl

# 忽略swap错误
cat <<EOF > /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
EOF

# 开启系统转发
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

# 让配置生效
sysctl --system

# 设置服务开机自启动
systemctl enable kubelet


# 加入集群(令牌过期作废)
kubeadm join 192.168.3.207:6443 --token a4645k.pq7e5e34y9sl9g53 --discovery-token-ca-cert-hash sha256:abd02c82cdefbcc2d17a2f53ec9b376e31d123ef33af880608d97f64b12a65f5  --ignore-preflight-errors=Swap

Zhao squad:

https://mp.weixin.qq.com/s?__biz=MzI5MjA5Mjg5OA==&mid=2247484395&idx=1&sn=0767cc24ec99ce818e41f7c40dda5d23&chksm=ec07ed66db7064707b05a9dda9c23882b9106577fc5f1ef45a9d78e6a93a57a5f507210207ae&token=1791180619&lang=zh_CN#rd

Guess you like

Origin www.cnblogs.com/plf-Jack/p/11256908.html