Kubernetes安装


Kubernetes作为生产级别的容器编排系统。 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。

为什么需要 Kubernetes,它能做什么?

容器是打包和运行应用程序的好方式。在生产环境中,您需要管理运行应用程序的容器,并确保不会停机。例如,如果一个容器发生故障,则需要启动另一个容器。如果系统处理此行为,会不会更容易?

这就是 Kubernetes 的救援方法!Kubernetes 为您提供了一个可弹性运行分布式系统的框架。Kubernetes 会满足您的扩展要求、故障转移、部署模式等。例如,Kubernetes 可以轻松管理系统的 Canary 部署。
Kubernetes 为您提供:

  • 服务发现和负载均衡,Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果到容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
  • 存储编排,Kubernetes 允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等。
  • 自动部署和回滚您,可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为所需状态。例如,您可以自动化 Kubernetes 来为您的部署创建新容器,删除现有容器并将它们的所有资源用于新容器。
  • 自动二进制打包,Kubernetes 允许您指定每个容器所需 CPU 和内存(RAM)。当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
  • 自我修复,Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
  • 密钥与配置管理,Kubernetes 允许您存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。您可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

安装Kubernetes

Kubernetes安装,需要连接谷歌。三台机器,一主两从。三台机器需要安装docker、kubelet、kubeadm、kubectl

以下安装三台机器都需要操作
配置yum源

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

yum clean all
yum makecache

将 SELinux 设置为 permissive 模式(相当于将其禁用)

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

关闭swap

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

安装

yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes

启动

systemctl enable kubelet
systemctl restart kubelet

下面操作在master节点上
初始化master节点

kubeadm init --apiserver-advertise-address=10.211.55.32 --pod-network-cidr=10.244.0.0/16

10.211.55.32为安装的机器ip

如果报错: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

等的时间有点长,复制一下控制台最后打印的记录

To start using your cluster, you need to run the following as a regular user:


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


You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/


Then you can join any number of worker nodes by running the following on each as root:


kubeadm join 10.211.55.26:6443 --token d931h4.krfgmvo2axrudoeu \
    --discovery-token-ca-cert-hash sha256:3b05c888cf13ed57882939d7e92e955106e4b8e58e288723defbc4bca3a3e1c8

还是在主节点上执行

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

配置网络,使用flannel

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

在两个从节点上操作

kubeadm join 10.211.55.26:6443 --token d931h4.krfgmvo2axrudoeu \
    --discovery-token-ca-cert-hash sha256:3b05c888cf13ed57882939d7e92e955106e4b8e58e288723defbc4bca3a3e1c8

最后验证,在主节点上输入

kubectl get nodes


NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   9m4s    v1.18.2
k8s-node1    Ready    <none>   2m46s   v1.18.2
k8s-node2    Ready    <none>   2m36s   v1.18.2

Author: Re:0
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Re:0 !
 Previous
Spring Boot Json序列化终极配置 Spring Boot Json序列化终极配置
现在的Web应用都是通过json序列化,SpringBoot内置Jackson工具提供json -> bean 或者 bean -> json序列化的。在SpringBoot序列化中,我们可以自定义json的序列化过程,比如增加
2022-08-18
Next 
Redis 实现用户签到功能 Redis 实现用户签到功能
签到功能对应的逻辑很常见,主要有以下几种场景 签到 1 天送 10 积分,连续签到 2 天送 20 积分,3 天送 30 积分,4 天以上均送 50 积分等 如果连续签到中断,则重置计数,每月初重置计数 在日历控件上展示用户每月签到情况,
2022-05-31
  TOC