我这里准备三台本地vmware虚拟机,版本号centos7.9,一台master节点,一台node1,一台node2

kubeadm方式部署。Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes集群。

一、初始化虚拟机环境(三台虚拟机都执行)

[root@k8s ~]# yum update #更新所有本地包,操作更新完成后建议快照一下。

二、操作所有节点

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
 
# 关闭 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
 
# 关闭 swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
 
# 根据规划设置主机名
vi /etc/hosts
192.168.10.1 k8s-master
192.168.10.2 k8s-node1
192.168.10.3 k8s-node2

# 将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
 
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

三、安装docker(三台虚拟机都执行)

1.wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2.yum -y install docker-ce
3.systemctl enable docker && systemctl start docker
 
4.配置镜像下载加速器:
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
阿良教育:http://www.aliangedu.cn
}
EOF
5.systemctl restart docker #重启docker
6.docker info #查看docker详情
 

四、安装cri-dockerd(三台虚拟机都执行)

1. wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.5/cri-dockerd-0.2.5-3.el7.x86_64.rpm
2. rpm -ivh cri-dockerd-0.2.5-3.el7.x86_64.rpm
3. 指定依赖镜像地址:
    vi /usr/lib/systemd/system/cri-docker.service ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
4. systemctl daemon-reload
5. systemctl enable cri-docker && systemctl start cri-docker
 

五、添加阿里云 YUM 软件源(三台虚拟机都执行)

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

六、安装 kubeadm,kubelet 和 kubectl(三台虚拟机都执行)

由于版本更新频繁,这里指定版本号部署:
1. yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
2. systemctl enable kubelet
 

七、 部署 Kubernetes Master (master节点执行)

1. 在 192.168.10.1(Master)执行。
   kubeadm init \
   --apiserver-advertise-address=192.168.10.1 \
   --image-repository registry.aliyuncs.com/google_containers \
   --kubernetes-version v1.25.0 \
   --service-cidr=10.96.0.0/12 \
   --pod-network-cidr=10.244.0.0/16 \
   --cri-socket=unix:///var/run/cri-dockerd.sock \
   --ignore-preflight-errors=all
 
注释:
  • --apiserver-advertise-address 集群通告地址
  • --image-repository 由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址
  • --kubernetes-version K8s 版本,与上面安装的一致阿良教育:http://www.aliangedu.cn
  • --service-cidr 集群内部虚拟网络,Pod 统一访问入口
  • --pod-network-cidr Pod 网络,与下面部署的 CNI 网络组件 yaml 中保持一致
  • --cri-socket 指定 cri-dockerd 接口,如果是 containerd 则使用--cri-socket unix:///run/containerd/containerd.sock
2. 初始化完成后,最后会输出一个 join 命令,先记住,下面用。
    拷贝 kubectl 使用的连接 k8s 认证文件到默认路径:
    1)mkdir -p $HOME/.kube
    2)sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    3)sudo chown $(id -u):$(id -g) $HOME/.kube/config
    查看工作节点:
    4)kubectl get nodes
         NAME STATUS ROLES AGE VERSION
         k8s-master NotReady control-plane,master 20s v1.25.0
注:由于网络插件还没有部署,还没有准备就绪 NotReady,先继续参考资料:
  https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
  https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node

八、加入 Kubernetes Node (node1,node2执行)

在 192.168.10.2/3(Node)执行。
向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令并手动加上 --cri-socket=unix:///var/run/cri-dockerd.sock:
1. kubeadm join 192.168.10.1:6443 --token 7gqt13.kncw9hg5085iwclx \ --discovery-token-ca-cert-hash sha256:66fbfcf18649a5841474c2dc4b9ff90c02fc05de0798ed690e1754437be35a01 --cri-socket=unix:///var/run/cri-dockerd.sock
  默认 token 有效期为 24 小时,当过期之后,该 token 就不可用了。这时就需要重新创建 token,
  可以直接使用命令快捷生成:阿良教育:http://www.aliangedu.cn。kubeadm token create --print-join-command 参考资料:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/

九、 部署容器网络(CNI)(master节点执行)

Calico 是一个纯三层的数据中心网络方案,是目前 Kubernetes 主流的网络方案。下载 YAML:
1. wget https://docs.projectcalico.org/manifests/calico.yaml
  下载完后还需要修改里面定义 Pod 网络(CALICO_IPV4POOL_CIDR),与前面 kubeadm init 的 --pod-network-cidr 指定的一样。
  修改完后文件后,部署:
2. kubectl apply -f calico.yaml
3. kubectl get pods -n kube-system
  等 Calico Pod 都 Running,节点也会准备就绪。
  注:以后所有 yaml 文件都只在 Master 节点执行。
  安装目录:/etc/kubernetes/
  组件配置文件目录:/etc/kubernetes/manifests/
  参考资料:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network

十、 部署 Dashboard(master节点执行)

Dashboard 是官方提供的一个 UI,可用于基本管理 K8s 资源。YAML 下载地址:
1. https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
课件中文件名是:kubernetes-dashboard.yaml
默认 Dashboard 只能集群内部访问,修改 Service 为 NodePort 类型,暴露到外部:阿良教育:http://www.aliangedu.cn
1. vi recommended.yaml
  ...
  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
  ...
2. kubectl apply -f recommended.yaml
3. kubectl get pods -n kubernetes-dashboard

十一、部署完成访问地址

访问地址:https://IP:30001
 

最新文章

  1. SPSS数据分析—配对Logistic回归模型
  2. powerdesigner,eclipse整合安装
  3. 【Android】apk文件反编译
  4. [转]Java 内部类笔记
  5. Java线程生命模型
  6. 异常-----java.sql.SQLException:ORA-01861:文字和格式字符串不匹配
  7. 367. Valid Perfect Square
  8. 每一行代码都有记录—如何用git一步步探索项目的历史
  9. linq partition by
  10. bzoj1055 ||P4290 [HAOI2008]玩具取名
  11. linux之tmpfs
  12. Read N Characters Given Read4 II - Call multiple times
  13. Oracle WIHT AS 用法
  14. Remove Nth Node From End of List leetcode java
  15. 基于jQuery左右滑动切换图片代码
  16. 载波帧听Carrier Sense
  17. 为OS X增加环境变量
  18. IE中的activex控件
  19. 华为交换机S5700系列配置通过STelnet登录设备示例
  20. 2017 GDS 全球域名大会7月7日举行

热门文章

  1. KingbaseES R6集群物理copy方式手工添加新备库节点
  2. net core 依赖注入DI
  3. MTU设置不当导致ssh运行命令卡死
  4. kotlin学习-Coroutines(协程)
  5. fields设计与测试
  6. pyinstaller打包Python程序报错OSError: Python library not found: libpython3.8.so, libpython3.8m.so
  7. Spring MVC 笔记2
  8. linux 内存泄漏检测原理及实现
  9. git 的提交与合并
  10. vim下的查找命令