相关文章推荐

1. 安装要求

  • 一台或多台机器,操作系统CentOS-7以上
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或- 更多
  • 集群中所有机器网络互通
  • 可以访问外网,需要拉取镜像
  • 禁止swap分区

2. 准备环境

本人买了三台云服务器,配置如下:

node_name ip CPU RAM 硬盘 宽带
k8s-master 172.31.0.60 2核 4G 40G 3Mb/s
k8s-node01 172.31.0.224 2核 4G 40G 3Mb/s
k8s-node02 172.31.0.237 2核 4G 40G 3Mb/s
# 关闭swap分区
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 关闭selinux 
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

设置主机名

hostnamectl set-hostname <hostname>

在master添加hosts

cat >> /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.31.0.60 k8s-master
172.31.0.224 k8s-node01
172.31.0.237 k8s-node02

3 安装Docker、kubeadm、kubelet【所有节点】

Kubernetes默认CRI(容器进行时)为Docker,因此先安装Docker

3.1 安装Docker

# 安装依赖包
yum install -y yum-utils
# 添加Docker软件包源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker CE
yum install -y docker-ce
# 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
# 配置阿里云镜像加速器
cat > /etc/docker/daemon.json << EOF
"registry-mirrors": ["https://obhube46.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
# 重启docker,使其生效
systemctl restart docker

3.2 添加阿里云YUM软件源

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

3.3 安装Kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署

# 查看kubelet kubeadm kubectl版本
yum list kubelet kubeadm kubectl  --showduplicates|sort -r
# 安装指定版本
yum -y install kubeadm-1.20.0 kubectl-1.20.0 kubelet-1.20.0
systemctl enable kubelet.service

4 部署Kubernetes Master

kubernetes-version:具体安装的实际版本
kubelet --version 命令获取;
apiserver-advertise-address:master机器的IP

kubeadm init --kubernetes-version=1.20.0 \
--apiserver-advertise-address=172.31.0.60 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
# 配置kubectl配置
mkdir -p $HOME/.kube
sudo cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 获取node状态
kubectl get nodes
# 可能报错1:Unable to connect to the server: dial tcp: lookup localhost on 114.114.114.114:53: no such host
# 解决办法:添加/etc/hosts localhost映射
cat >> /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# 可能报错2:The connection to the server localhost:8080 was refused - did you specify the right host or port?
# 解决办法:添加配置文件到环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile

kubeadm init做了哪些工作:

  1. [preflight] 环境监察和拉取镜像(kubeadm config images pull)
  2. [certs]创建证书目录/etc/kubernetes/pki,生成证书
  3. [kubeconfig]创建连接apiserver的配置文件目录/etc/kubernetes
  4. [kubelet-start]生成kubelet配置文件和启动
  5. [control-plane]使用静态的pod启动master组件/etc/kubernetes/maintests
  6. [upload-config][upload-certs][kubelet]使用ConfigMap存储kubelet配置
  7. [mark-control-plane]给master节点添加标签
  8. [bootstrap-token]kubelet自动申请证书机制
  9. [addons]安装插件CoreDNS和kube-proxy

5 加入Kubernetes Node

分别在k8s-node01,k8s-node02上执行(kubeadm init时的log)

kubeadm join 172.31.0.60:6443 --token i8px88.bpy0zxxc7jjgbnv8 \
    --discovery-token-ca-cert-hash sha256:cf418940ea74bf58ba99eca57e960fdef8a381932cad2f77c37e45e79610e02f

6 部署容器网络CNI

在master节点安装

wget https://docs.projectcalico.org/manifests/calico.yaml
sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml
kubectl apply -f calico.yaml

过一会,可看到节点由NotReady状态转为Ready状态,即安装完成.

kubectl get nodes
# NAME         STATUS   ROLES                  AGE   VERSION
# k8s-master   Ready    control-plane,master   16m   v1.20.0
# k8s-node01   Ready    <none>                 16m   v1.20.0
# k8s-node02   Ready    <none>                 15m   v1.20.0

7 测试kubernetes集群之快速部署一个网站

在Kubernetes集群中创建一个pod,验证是否正常运行

# 使用Deployment控制器部署镜像
kubectl create deployment nginx --image=nginx
# 使用Service将Pod暴露出去
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort
# 获取随机生成的端口
kubectl get pod,svc

访问地址,需要使用公网Ip,端口随机生成,通过get svc获取,在安全组配置端口,允许入方向
http://NodeIP:Port

# 可能报错:get pod时,pod一直处于"ContainerCreating"状态,通过 describe pod 查看日志得到报错如下
kubectl get pod
kubectl describe pod <nginx-pod-name>
# stat /var/lib/calico/nodename: no such file or directory: check that the calico/node container  is running and has mounted /var/lib/calico/
# 解决办法:
#创建目录和文件
mkdir /var/lib/calico/
touch /var/lib/calico/nodename
#将本机ip写进nodename文件中
echo "172.31.0.60" > /var/lib/calico/nodename
  • 验证port工作
kubectl get pod
# nginx的pod处于running状态
  • 验证Pod网络通信
kubectl get pods -o wide
#NAME                     READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
#nginx-6799fc88d8-zt54g   1/1     Running   0          12m   10.244.85.193   k8s-node01   <none>           <none>
# 在所有节点ping Pod IP,能正常ping通
ping 10.244.85.193
  • 验证DNS解析
kubectl get pods -n kube-system
# coredns 处于running状态

8 部署Dashboard

wget http://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
mv recommended.yaml kubernetes-dashboard.yaml

vim kubernetes-dashboard.yaml
# 添加 nodePort: 30001 , type: NodePort
....
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort
# 更改完成后,运行启动dashboard
kubectl apply -f kubernetes-dashboard.yaml
# 获取pod状态,确认为running状态,则安装成功
kubectl get pods -n kubernetes-dashboard

访问地址:
https://公网Ip:30001
创建service account并绑定默认的cluster-admin管理员集群角色:

# 创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
# 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 获取用户Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
                    1. 安装要求一台或多台机器,操作系统CentOS-7以上硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或- 更多集群中所有机器网络互通可以访问外网,需要拉取镜像禁止swap分区2. 准备环境本人买了三台云服务器,配置如下:node_nameipCPURAM硬盘宽带k8s-master172.31.0.602核4G40G3Mb/sk8s-node01172.31.0.2242核4G40G3Mb/sk8s-no
				
Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集。Kubernetes Crictl 1.
包含:kube-apiserver-1.20.0.tar、kube-controller-manager-1.20.0.tar、kube-proxy-1.20.0.tar、kube-scheduler-1.20.0.tar、etcd-3.4.13-0.tar、pause-3.2.tar、coredns-1.7.0.tar; 镜像导入: docker load -i kube-apiserver-1.20.0.tar docker load -i kube-controller-manager-1.20.0.tar docker load -i kube-proxy-1.20.0.tar docker load -i kube-scheduler-1.20.0.tar docker load -i etcd-3.4.13-0.tar docker load -i coredns-1.7.0.tar docker load -i pause-3.2.tar
提示:这里描述遇到的问题: ubuntu 使用apt-get install xxx 提示E: Unable to locate package kubelet root@192-168-1-236:/home/legym# apt-get install kubelet Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to loca
本文主要是基于另一篇博客,按照那篇博客安装出现问题,进行处理和记录的 https://blog.csdn.net/u013355826/article/details/82801482 执行yum makecache fast && yum install -y kubelet-1.10.0 kubeadm-1.10.0 kubectl-1.10.0 这个步骤的时候报错 Error: Package: kubelet-1.10.0-0.x86_64 (kubernetes) https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 一、安装 kubeadm、kubeletkubectl 你需要在每台机器上安装以下的软件包kubeadm:用来初始化集群的指令。 kubelet:在集群中的每个节点上用来启动 Pod ...
node1 192.168.1.182 2C 6G 准备不低于2台虚机。 1台 master,其余的做node ;OS: Centos7.3 mini install。 最小化安装。配置节点IP 主机名 IP 配置 master1 192.168.1.18...
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
3.安装依赖包 yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wgetvimnet-tools git 4. 关闭 SELINUX swapoff -a && s
原文:https://blog.csdn.net/m0_37814112/article/details/120322778 说明:kubernetes1.20.6高可用部署完整资源包 calico.yaml #calico网络插件yaml文件 cert-rsync-master.sh #证书分发脚本 docker #docker自动化部署工具 init_env.sh #初始化安装脚本 ipvsadm images #k8s相关镜像 keepalived #keepalived自动化部署工具 kernel kubeadm-config.yaml #kubernetes配置文件 kubeadm-tools realserver.sh ssh_key.sh #ssh多机互信脚本 update_kernel.sh #内核升级脚本
DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information. Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations [0, 200, 200]], np.int)怎么改
CSDN-Ada助手: 非常感谢您分享SQLServer安装与PowerBI本地部署的经验!这篇博客一定会对很多读者有所帮助。我们非常期待您写更多关于SQLServer和PowerBI的博客!如果您愿意,我们建议您可以写一篇关于如何使用SQLServer和PowerBI搭建企业级数据仓库的文章,这个话题非常实用且具有技术含量,相信会吸引更多读者阅读和学习。期待您的文章! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 Harbor搭建私有仓库 weixin_45607133: [Step 3]: preparing harbor configs ... prepare base dir is set to /root/harbor WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested exec /usr/bin/python3: exec format error 这是为什么 kubernetes 1.20.0安装 何必再憶: 实现命令自动补全 yum install -y bash-completion source /usr/share/bash-completion/bash_completion source <(kubectl completion bash) Harbor搭建私有仓库 何必再憶: docker login报错连接失败,原因:重启后,需要重新启动 harbor [code=python] # 登录harbor docker login hub.jun.com Authenticating with existing credentials... Login did not succeed, error: Error response from daemon: Get "http://hub.jun.com/v2/": dial tcp 192.168.175.30:80: connect: connection refused # 重新启动harbor cd ~/harbor ./install.sh [/code] 搭建Python开发环境 不正经的kimol君: 忍不住就是一个赞,写得很棒,欢迎回赞哦~
 
推荐文章