Day01-harbor仓库的https摆设,kubernetes集群架构,摆设方式及基于kubeadm ...

打印 上一主题 下一主题

主题 507|帖子 507|积分 1521

1、摆设harbor https认证实战

1.1 安装docker

(1)下载docker的rpm包
  1. [root@harbor.oldboyedu.com ~]# yum -y install wget
  2. [root@harbor.oldboyedu.com ~]# wget http://192.168.15.253/Kubernetes/Day01-/softwares/oldboyedu-docker-ce-23_0_1.tar.gz
复制代码
(2)解压并安装软件包
  1. [root@harbor.oldboyedu.com ~]# tar xf oldboyedu-docker-ce-23_0_1.tar.gz
  2. [root@harbor.oldboyedu.com ~]# yum -y localinstall oldboyedu-docker-ce-23_0_1/*.rpm
复制代码
(3)添加自动补全功能
  1. [root@harbor.oldboyedu.com ~]# yum -y install bash-completion
  2. [root@harbor.oldboyedu.com ~]# source /usr/share/bash-completion/bash_completion
复制代码
(4)配置镜像加速
  1. mkdir -p /etc/docker
  2. tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4.   "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"]
  5. }
  6. EOF
  7. systemctl daemon-reload
  8. systemctl restart docker
复制代码
(5)验证镜像加速是否乐成
  1. [root@harbor.oldboyedu.com ~]# docker info | grep "Registry Mirrors" -A 1
  2. Registry Mirrors:
  3.   https://tuv7rqqq.mirror.aliyuncs.com/
复制代码
(6)将docker设置为开机自启动
  1. [root@harbor.oldboyedu.com ~]# systemctl enable --now docker
  2. Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
复制代码
1.2 安装docker compose

(1)添加epel源
  1. [root@harbor.oldboyedu.com ~]# curl  -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
复制代码
(2)安装docker-compose
  1. [root@harbor.oldboyedu.com ~]# yum -y install docker-compose
复制代码
(3)查看docker-compose版本
  1. [root@harbor.oldboyedu.com ~]# docker-compose version
  2. docker-compose version 1.18.0, build 8dd22a9
  3. docker-py version: 2.6.1
  4. CPython version: 3.6.8
  5. OpenSSL version: OpenSSL 1.0.2k-fips  26 Jan 2017
复制代码
1.3 安装harbor

(1)下载harbor软件包
  1. [root@harbor.oldboyedu.com ~]# wget http://192.168.15.253/Kubernetes/Day01-/softwares/harbor-offline-installer-v1.10.10.tgz
复制代码
(2)创建工作目录
  1. [root@harbor.oldboyedu.com ~]# mkdir -pv /oldboyedu/softwares
复制代码
(3)加压harbor软件包
  1. [root@harbor.oldboyedu.com ~]# tar xf harbor-offline-installer-v1.10.10.tgz -C /oldboyedu/softwares/
复制代码
(4)创建证书的工作目录
  1. [root@harbor.oldboyedu.com ~]# mkdir -pv /oldboyedu/softwares
  2. /harbor/certs/{ca,server,client}
复制代码
(5)生成自建CA证书
  1. # 5.1 进入证书目录
  2. [root@harbor.oldboyedu.com ~]# cd /oldboyedu/softwares/harbor/certs/
  3. # 5.2 生成CA私钥
  4. [root@harbor.oldboyedu.com certs]# openssl genrsa -out ca/ca.key 4096
  5. # 5.3 生成ca的自签名证书
  6. [root@harbor.oldboyedu.com certs]# openssl req -x509 -new -nodes -sha512 -days 3650 \
  7. -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=oldboyedu.com" \
  8. -key ca/ca.key \
  9. -out ca/ca.crt
复制代码
(6)生成harbor服务器的证书文件及客户端证书
  1. # 6.1 生成harbor主机的私钥
  2. [root@harbor.oldboyedu.com certs]# openssl genrsa -out server/harbor.oldboyedu.com.key 4096
  3. # 6.2 生成harbor主机的证书申请
  4. [root@harbor.oldboyedu.com certs]# openssl req -sha512 -new \
  5.     -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.oldboyedu.com" \
  6.     -key server/harbor.oldboyedu.com.key \
  7.     -out server/harbor.oldboyedu.com.csr
  8.    
  9. # 6.3 生成x509 v3扩展文件
  10. [root@harbor.oldboyedu.com certs]# cat > v3.ext <<-EOF
  11. authorityKeyIdentifier=keyid,issuer
  12. basicConstraints=CA:FALSE
  13. keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
  14. extendedKeyUsage = serverAuth
  15. subjectAltName = @alt_names
  16. [alt_names]
  17. DNS.1=oldboyedu.com
  18. DNS.2=oldboyedu
  19. DNS.3=harbor.oldboyedu.com
  20. EOF
  21. # 6.4 使用"v3.ext"给harbor主机签发证书
  22. [root@harbor.oldboyedu.com certs]# openssl x509 -req -sha512 -days 3650 \
  23.     -extfile v3.ext \
  24.     -CA ca/ca.crt -CAkey ca/ca.key -CAcreateserial \
  25.     -in server/harbor.oldboyedu.com.csr \
  26.     -out server/harbor.oldboyedu.com.crt
  27.    
  28. # 6.5 将crt文件转换为cert客户端证书文件
  29. [root@harbor.oldboyedu.com certs]# openssl x509 -inform PEM -in server/harbor.oldboyedu.com.crt -out server/harbor.oldboyedu.com.cert
  30. # 6.6 准备docker客户端证书
  31. [root@harbor.oldboyedu.com certs]# cp server/harbor.oldboyedu.com.{cert,key} client/
  32. [root@harbor.oldboyedu.com certs]# cp ca/ca.crt client/
  33. [root@harbor.oldboyedu.com certs]# ll client/
  34. total 12
  35. -rw-r--r-- 1 root root 2033 Apr 12 10:09 ca.crt
  36. -rw-r--r-- 1 root root 2122 Apr 12 10:09 harbor.oldboyedu.com.cert
  37. -rw-r--r-- 1 root root 3247 Apr 12 10:09 harbor.oldboyedu.com.key
  38. # 6.7 查看所有证书文件结果
  39. [root@harbor.oldboyedu.com certs]# ll -R
  40. .:
  41. total 4
  42. drwxr-xr-x 2 root root  48 Apr 12 09:46 ca
  43. drwxr-xr-x 2 root root  85 Apr 12 10:09 client
  44. drwxr-xr-x 2 root root 135 Apr 12 09:47 server
  45. -rw-r--r-- 1 root root 275 Apr 12 09:45 v3.ext
  46. ./ca:
  47. total 12
  48. -rw-r--r-- 1 root root 2033 Apr 12 09:41 ca.crt
  49. -rw-r--r-- 1 root root 3243 Apr 12 09:40 ca.key
  50. -rw-r--r-- 1 root root   17 Apr 12 09:46 ca.srl
  51. ./client:
  52. total 12
  53. -rw-r--r-- 1 root root 2033 Apr 12 10:09 ca.crt
  54. -rw-r--r-- 1 root root 2122 Apr 12 10:09 harbor.oldboyedu.com.cert
  55. -rw-r--r-- 1 root root 3247 Apr 12 10:09 harbor.oldboyedu.com.key
  56. ./server:
  57. total 16
  58. -rw-r--r-- 1 root root 2122 Apr 12 09:47 harbor.oldboyedu.com.cert
  59. -rw-r--r-- 1 root root 2122 Apr 12 09:46 harbor.oldboyedu.com.crt
  60. -rw-r--r-- 1 root root 1716 Apr 12 09:44 harbor.oldboyedu.com.csr
  61. -rw-r--r-- 1 root root 3247 Apr 12 09:43 harbor.oldboyedu.com.key
复制代码
(7)配置harbor服务器使用证书
  1. # 7.1 切换工作目录
  2. [root@harbor.oldboyedu.com certs]# cd ..
  3. [root@harbor.oldboyedu.com harbor]# pwd
  4. /oldboyedu/softwares/harbor
  5. # 7.2 修改配置文件
  6. [root@harbor.oldboyedu.com harbor]# echo alias yy=\'egrep -v "\^.*#\|\^\$"\'  >> /root/.bashrc
  7. [root@harbor.oldboyedu.com harbor]# source /root/.bashrc
  8. [root@harbor.oldboyedu.com harbor]# yy harbor.yml
  9. hostname: harbor.oldboyedu.com
  10. ...
  11. https:
  12.   port: 443
  13.   certificate: /oldboyedu/softwares/harbor/certs/server/harbor.oldboyedu.com.crt
  14.   private_key: /oldboyedu/softwares/harbor/certs/server/harbor.oldboyedu.com.key
  15. harbor_admin_password: 1
  16. ...
复制代码
(8)安装harbor服务
  1. [root@harbor.oldboyedu.com harbor]# ./install.sh        
复制代码
(9)Windows验证harbor的https
  1. # 9.1 windows配置主机解析
  2. # C:\Windows\System32\drivers\etc\hosts
  3. ...
  4. 10.0.0.250 harbor.oldboyedu.com
  5. # 9.2 浏览器访问
  6. https://harbor.oldboyedu.com
复制代码
(10)Linux验证harbor的https
  1. # 10.1 配置地址解析
  2. [root@harbor.oldboyedu.com ~]# echo 10.0.0.250 harbor.oldboyedu.com >> /etc/hosts
  3. # 10.2 在docker客户端节点创建自签证书域名存放路径
  4. [root@harbor.oldboyedu.com ~]# mkdir -pv /etc/docker/certs.d/harbor.oldboyedu.com
  5. # 10.3 服务端将证书文件拷贝到客户端docker节点,若不执行该操作,则会报错"x509: certificate signed by unknown authority"
  6. [root@harbor.oldboyedu.com ~]# cp /oldboyedu/softwares/harbor/certs/client/* /etc/docker/certs.d/harbor.oldboyedu.com/
  7. [root@harbor.oldboyedu.com ~]# ll /etc/docker/certs.d/harbor.oldboyedu.com/
  8. total 12
  9. -rw-r--r-- 1 root root 2033 Apr 12 10:11 ca.crt
  10. -rw-r--r-- 1 root root 2122 Apr 12 10:11 harbor.oldboyedu.com.cert
  11. -rw-r--r-- 1 root root 3247 Apr 12 10:11 harbor.oldboyedu.com.key
  12. # 10.4 登录验证
  13. [root@harbor.oldboyedu.com ~]# docker login -u admin -p 1 harbor.oldboyedu.com
  14. WARNING! Using --password via the CLI is insecure. Use --password-stdin.
  15. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  16. Configure a credential helper to remove this warning. See
  17. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  18. Login Succeeded
  19. # 10.5 退出登录
  20. [root@harbor.oldboyedu.com ~]# more /root/.docker/config.json
  21. {
  22.         "auths": {
  23.                 "harbor.oldboyedu.com": {
  24.                         "auth": "YWRtaW46MQ=="
  25.                 }
  26.         }
  27. }
  28. [root@harbor.oldboyedu.com ~]# echo YWRtaW46MQ==
  29. YWRtaW46MQ==
  30. [root@harbor.oldboyedu.com ~]# echo YWRtaW46MQ== | base64 -d | more
  31. admin:1
  32. [root@harbor.oldboyedu.com ~]# docker logout harbor.oldboyedu.com
  33. Removing login credentials for harbor.oldboyedu.com
  34. [root@harbor.oldboyedu.com ~]# more /root/.docker/config.json
  35. {
  36.         "auths": {}
  37. }
复制代码

2、Docker简介

  1. 2013年docker开源。
  2. 2014年Google关注了docker,容器编排工具Kubernetes(简称K8S)。
  3.         - 可以原生支持docker编排,解决docker编排问题
  4.         - 以集群方式工作;
  5.         2014-03:
  6.         2014-06: 发布版本... k8s采用Golang语言研发。
  7. docker inc ---> 201406 ----> docker swarm
  8.                                          ----> docker machine
  9.                                          ----> docker compose                                  
  10.         2014 ---> coreOS ---> rkt
  11.         ----> rkt ---> k8s
  12.         2014 ---> K8S ----> CNCF组织。 Google,RedHat,.....                                  
  13. 2017.12 ----> 白热化 ----> Google 占用市场70% + docker swarm 不足20% + 其他编排工具....
  14.         ---> coreOS ---> 2018.01 ---> RedHat收购。
  15.         ---> RedHat ---> 2019. ---> IBM收购。
  16.         ---> docker inc ---> Mirantis ----> 2019收购,对docker swarm最少支持2年+,但是重心放在kubernetes。
复制代码

Kubernetes集群架构图解


CRI:
Container Runtime Interface
符合CRI的接口的容器均可以运行在K8S集群上。
CNI:
Container Network Interface
使得多个K8S集群节点的容器实现网络互通。
3、kubernetes集群摆设方式



目前生产环境摆设kubernetes集群重要由两种方式:
  1. - kubeadm:
  2.            kubeadm是一个K8S部署工具,提供kubeadm init和kubejoin,用于快速部署kubernetes集群。
  3.     你可以使用kubeadm工具来创建和管理Kubernetes集群,适合在生产环境部署。
  4.     该工具能够执行必要的动作并用一种用户友好的方式启动一个可用的、安全的集群。
  5.     推荐阅读:
  6.         https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/
  7.         https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
  8.         https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
  9. - 二进制部署:
  10.         从GitHub下载发行版的二进制包,手动部署每个组件,组成kubernetes集群。
  11.        
  12. 除了上述介绍的两种方式部署外,还有其他部署方式的途径:
  13. - yum:
  14.      已废弃,目前支持的最新版本为2017年发行的1.5.2版本。
  15. - kind安装:
  16.      kind让你能够在本地计算机上运行Kubernetes。 kind要求你安装并配置好Docker。
  17.      推荐阅读:
  18.      https://kind.sigs.k8s.io/docs/user/quick-start/
  19. - minikube:
  20.      适合开发环境,能够快速在Windows或者Linux构建K8S集群。
  21.      参考链接:
  22.      https://minikube.sigs.k8s.io/docs/
  23. - rancher:
  24.      基于K8S改进发行了轻量级K8S,让K3S孕育而生。
  25.      参考链接:
  26.      https://www.rancher.com/
  27. - KubeSphere:
  28.      青云科技基于开源KubeSphere快速部署K8S集群。
  29.      参考链接:
  30.      https://kubesphere.com.cn
  31. - kuboard:
  32.      也是对k8s进行二次开发的产品,新增了很多独有的功能。
  33.      参考链接:
  34.      https://kuboard.cn/
  35. - kubeasz:
  36.      使用ansible部署,扩容,缩容kubernetes集群,安装步骤官方文档已经非常详细了。
  37.      参考链接:
  38.      https://github.com/easzlab/kubeasz/
  39. - 第三方云厂商:
  40.       比如aws,阿里云,腾讯云,京东云等云厂商均有K8S的相关SAAS产品。
  41. - 更多的第三方部署工具:
  42.       参考链接:
  43.       https://landscape.cncf.io/
复制代码

4、K8S全部节点环境准备

(1)虚拟机操作系统环境准备
参考链接:
https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
(2)关闭swap分区
  1. # 2.1 临时关闭
  2. swapoff -a && sysctl -w vm.swappiness=0
  3. # 2.2 基于配置文件关闭
  4. sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
复制代码
(3)确保各个节点MAC地点或product_uuid唯一
  1. ifconfig  eth0  | grep ether | awk '{print $2}'
  2. cat /sys/class/dmi/id/product_uuid
  3. 温馨提示:
  4.     一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。
  5.     Kubernetes使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。
复制代码
(4)检查网络节点是否互通
  1. 简而言之,就是检查你的k8s集群各节点是否互通,可以使用ping命令来测试。
复制代码
(5)允许iptable检查桥接流量
  1. cat <<EOF | tee /etc/modules-load.d/k8s.conf
  2. br_netfilter
  3. EOF
  4. cat <<EOF | tee /etc/sysctl.d/k8s.conf
  5. net.bridge.bridge-nf-call-ip6tables = 1
  6. net.bridge.bridge-nf-call-iptables = 1
  7. EOF
  8. sysctl --system
复制代码
(6)检查端口是否被占用
  1. 参考链接: https://kubernetes.io/zh/docs/reference/ports-and-protocols/
复制代码
(7)检查docker的环境
  1. 参考链接:
  2.         https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.15.md#unchanged
  3.        
  4. # 7.1 配置docker源
  5. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  6. curl -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
  7. yum install -y yum-utils device-mapper-persistent-data lvm2
  8. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  9. sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
  10. yum list docker-ce --showduplicates
  11. # 7.2 安装指定的docker版本
  12. yum -y install docker-ce-20.10.24 docker-ce-cli-20.10.24
  13. yum -y install bash-completion
  14. source /usr/share/bash-completion/bash_completion
  15.                 注意,如果网速慢的小伙伴,可以直接使用我下载好的软件包,执行操作如下:
  16. curl -o oldboyedu-docker-rpm-20_10_24.tar.gz http://192.168.15.253/Kubernetes/Day01-/softwares/oldboyedu-docker-rpm-20_10_24.tar.gz
  17. tar xf oldboyedu-docker-rpm-20_10_24.tar.gz && yum -y localinstall oldboyedu-docker-rpm-20.10/*.rpm && rm -rf oldboyedu-docker-rpm-20*
  18. # 7.3 配置docker优化
  19. mkdir -pv /etc/docker && cat <<EOF | tee /etc/docker/daemon.json
  20. {
  21.   "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"],
  22.   "exec-opts": ["native.cgroupdriver=systemd"]
  23. }
  24. EOF
  25. # 7.4 将harbor服务器的客户端证书拷贝到k8s集群 *****
  26. # 7.4.1 k8s所有节点创建自建证书目录
  27. mkdir -pv /etc/docker/certs.d/harbor.oldboyedu.com
  28. # 7.4.2 登录harbor服务器将自建证书拷贝到K8S集群的所有节点
  29. [root@harbor.oldboyedu.com ~]# scp /oldboyedu/softwares/harbor/certs/client/* 10.0.0.231:/etc/docker/certs.d/harbor.oldboyedu.com
  30. [root@harbor.oldboyedu.com ~]# scp /oldboyedu/softwares/harbor/certs/client/* 10.0.0.232:/etc/docker/certs.d/harbor.oldboyedu.com
  31. [root@harbor.oldboyedu.com ~]# scp /oldboyedu/softwares/harbor/certs/client/* 10.0.0.233:/etc/docker/certs.d/harbor.oldboyedu.com
  32. # 7.5 配置docker开机自启动
  33. systemctl enable --now docker
  34. systemctl status docker
复制代码
(8)禁用防火墙
  1. systemctl disable --now firewalld
复制代码
(9)禁用selinux
  1. sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
  2. grep ^SELINUX= /etc/selinux/config
复制代码
(10)配置host解析
  1. cat >> /etc/hosts <<'EOF'
  2. 10.0.0.231        k8s231.oldboyedu.com
  3. 10.0.0.232        k8s232.oldboyedu.com
  4. 10.0.0.233        k8s233.oldboyedu.com
  5. 10.0.0.250        harbor.oldboyedu.com
  6. EOF
  7. cat /etc/hosts
复制代码
(11)验证是否可以或许登录harbor仓库
  1. [root@k8s231.oldboyedu.com ~]# docker login -u admin -p 1 harbor.oldboyedu.com
复制代码
软件包作用说明
  1. 你需要在每台机器上安装以下的软件包:
  2.         kubeadm:
  3.                 用来初始化集群的指令。
  4.         kubelet:
  5.                 在集群中的每个节点上用来启动Pod和容器等。
  6.         kubectl:
  7.                 用来与集群通信的命令行工具。
  8.                        
  9. kubeadm不能帮你安装或者管理kubelet或kubectl,所以你需要确保它们与通过kubeadm安装的控制平面(master)的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。
  10. 然而,控制平面与kubelet间的相差一个次要版本不一致是支持的,但kubelet的版本不可以超过"API SERVER"的版本。 例如,1.7.0版本的kubelet可以完全兼容1.8.0版本的"API SERVER",反之则不可以。
复制代码
5、全部节点安装kubeadm,kubelet,kubectl

(1)配置软件源
  1. cat  > /etc/yum.repos.d/kubernetes.repo <<EOF
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  5. enabled=1
  6. gpgcheck=0
  7. repo_gpgcheck=0
  8. EOF
复制代码
(2)查看kubeadm的版本(将来你要安装的K8S时请全部组件版本均保持同等!)
  1. yum -y list kubeadm --showduplicates | sort -r
复制代码
(3)安装kubeadm,kubelet,kubectl软件包
  1. yum -y install kubeadm-1.23.17-0 kubelet-1.23.17-0 kubectl-1.23.17-0
  2. 注意,如果网速慢的小伙伴,可以直接使用我下载好的软件包,执行操作如下:
  3. curl -o oldboyedu-kubeadmin-rpm-1_23_17.tar.gz  http://192.168.15.253/Kubernetes/Day01-/softwares/oldboyedu-kubeadmin-rpm-1_23_17.tar.gz
  4. tar xf oldboyedu-kubeadmin-rpm-1_23_17.tar.gz && yum -y localinstall oldboyedu-kubeadmin-rpm-1_23_17/*.rpm && rm -rf oldboyedu-kubeadmin-rpm-1_23_17*
复制代码
(4)启动kubelet服务(若服务启动失败时正常现象,其会自动重启,由于缺失配置文件,初始化集群后恢复!此步调可跳过!)
  1. systemctl enable --now kubelet
  2. systemctl status kubelet
  3. 参考链接:
  4.         https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-linux/
复制代码
6、初始化control plan节点

(1)使用kubeadm初始化master节点
  1. [root@k8s231.oldboyedu.com ~]# kubeadm init --kubernetes-version=v1.23.17 --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16  --service-dns-domain=oldboyedu.com
  2. 相关参数说明:
  3. --kubernetes-version:
  4.         指定K8S master组件的版本号。
  5.                
  6. --image-repository:
  7.         指定下载k8s master组件的镜像仓库地址。
  8.        
  9. --pod-network-cidr:
  10.         指定Pod的网段地址。
  11.        
  12. --service-cidr:
  13.         指定SVC的网段
  14. --service-dns-domain:
  15.         指定service的域名。若不指定,默认为"cluster.local"。
复制代码
使用kubeadm初始化集群时,大概会出现如下的输出信息:
  1. [init]
  2.         使用初始化的K8S版本。
  3.        
  4. [preflight]
  5.         主要是做安装K8S集群的前置工作,比如下载镜像,这个时间取决于你的网速。
  6. [certs]
  7.         生成证书文件,默认存储在"/etc/kubernetes/pki"目录哟。
  8. [kubeconfig]
  9.         生成K8S集群的默认配置文件,默认存储在"/etc/kubernetes"目录哟。
  10. [kubelet-start]
  11.         启动kubelet,
  12.     环境变量默认写入:"/var/lib/kubelet/kubeadm-flags.env"
  13.     配置文件默认写入:"/var/lib/kubelet/config.yaml"
  14. [control-plane]
  15.         使用静态的目录,默认的资源清单存放在:"/etc/kubernetes/manifests"。
  16.         此过程会创建静态Pod,包括"kube-apiserver","kube-controller-manager"和"kube-scheduler"
  17. [etcd]
  18.         创建etcd的静态Pod,默认的资源清单存放在:""/etc/kubernetes/manifests"
  19.        
  20. [wait-control-plane]
  21.         等待kubelet从资源清单目录"/etc/kubernetes/manifests"启动静态Pod。
  22. [apiclient]
  23.         等待所有的master组件正常运行。
  24.        
  25. [upload-config]
  26.         创建名为"kubeadm-config"的ConfigMap在"kube-system"名称空间中。
  27.        
  28. [kubelet]
  29.         创建名为"kubelet-config-1.22"的ConfigMap在"kube-system"名称空间中,其中包含集群中kubelet的配置
  30. [upload-certs]
  31.         跳过此节点,详情请参考”--upload-certs"
  32.        
  33. [mark-control-plane]
  34.         标记控制面板,包括打标签和污点,目的是为了标记master节点。
  35.        
  36. [bootstrap-token]
  37.         创建token口令,例如:"kbkgsa.fc97518diw8bdqid"。
  38.         如下图所示,这个口令将来在加入集群节点时很有用,而且对于RBAC控制也很有用处哟。
  39. [kubelet-finalize]
  40.         更新kubelet的证书文件信息
  41. [addons]
  42.         添加附加组件,例如:"CoreDNS"和"kube-proxy”
复制代码
(2)拷贝授权文件,用于管理K8S集群(只在master节点)
  1. [root@k8s231.oldboyedu.com ~]# mkdir -p $HOME/.kube
  2. [root@k8s231.oldboyedu.com ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. [root@k8s231.oldboyedu.com ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config       
复制代码
(3)查看集群节点
  1. [root@k8s231.oldboyedu.com ~]# kubectl get componentstatuses
  2. [root@k8s231.oldboyedu.com ~]# kubectl get cs
复制代码
7、配置全部worker节点加入k8s集群

(1)全部节点加入K8S集群,留意,你的token和我不一样哟~(******,复制你自己的token)
  1. [root@k8s232.oldboyedu.com ~]# kubeadm join 10.0.0.231:6443 --token uh78rb.9nyqap0zrn5sj7wd \
  2.         --discovery-token-ca-cert-hash sha256:27b747e1e77c00f5684301a5e76a51eb4634fb80a76e7bd30113ac347e03aaf1
  3. [root@k8s233.oldboyedu.com ~]# kubeadm join 10.0.0.231:6443 --token uh78rb.9nyqap0zrn5sj7wd \
  4.         --discovery-token-ca-cert-hash sha256:27b747e1e77c00f5684301a5e76a51eb4634fb80a76e7bd30113ac347e03aaf1
复制代码
(2)查看现有的节点
  1. [root@k8s231.oldboyedu.com ~]# kubectl get nodes
  2. NAME                   STATUS     ROLES                  AGE     VERSION
  3. k8s231.oldboyedu.com   NotReady   control-plane,master   15m     v1.23.17
  4. k8s232.oldboyedu.com   NotReady   <none>                 3m39s   v1.23.17
  5. k8s233.oldboyedu.com   NotReady   <none>                 3m6s    v1.23.17
复制代码


  • 添加kubectl的自动补全功能
  1. [root@k8s231.oldboyedu.com ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc && source ~/.bashrc
复制代码
8、安装网络插件并验证连通性

(1)下载flannel的资源清单
  1. [root@k8s231.oldboyedu.com ~]# wget http://192.168.15.253/Kubernetes/Day01-/config/kube-flannel.yml
复制代码
(2)安装flannel(值得留意的是,如果你的Pod网络和我的不一样"10.100.0.0/16",请自行修改配置文件)
  1. [root@k8s231.oldboyedu.com ~]# kubectl apply -f kube-flannel.yml
复制代码
(3)检查flannel组件是否正常,均处于"Running"状态!
  1. [root@k8s231.oldboyedu.com ~]# kubectl get pods -A -o wide| grep kube-flannel
  2. kube-flannel   kube-flannel-ds-c9k8g                          1/1     Running   0          77s   10.0.0.232   k8s232.oldboyedu.com   <none>           <none>
  3. kube-flannel   kube-flannel-ds-kgndk                          1/1     Running   0          77s   10.0.0.233   k8s233.oldboyedu.com   <none>           <none>
  4. kube-flannel   kube-flannel-ds-nc67r                          1/1     Running   0          77s   10.0.0.231   k8s231.oldboyedu.com   <none>           <none>
  5. [root@k8s231.oldboyedu.com ~]#
复制代码
(4)编写ds资源清单
  1. [root@k8s231.oldboyedu.com ~]# cat oldboyedu-linux85-ds.yaml
  2. kind: DaemonSet
  3. apiVersion: apps/v1
  4. metadata:
  5.   name: linux85-ds
  6. spec:
  7.   selector:
  8.     matchLabels:
  9.       school: oldboyedu
  10.       class: linux85
  11.   template:
  12.     metadata:
  13.       labels:
  14.         school: oldboyedu
  15.         class: linux85
  16.     spec:
  17.       containers:
  18.       - image: alpine
  19.         stdin: true
  20.         name: mylinux
复制代码
(5)创建ds资源
  1. [root@k8s231.oldboyedu.com ~]# kubectl apply -f oldboyedu-linux85-ds.yaml
  2. daemonset.apps/linux85-ds created
  3. [root@k8s231.oldboyedu.com ~]# kubectl get pods -o wide
  4. NAME               READY   STATUS    RESTARTS   AGE     IP           NODE                   NOMINATED NODE   READINESS GATES
  5. linux85-ds-2ks6n   1/1     Running   0          2m48s   10.100.2.2   k8s233.oldboyedu.com   <none>           <none>
  6. linux85-ds-m5zd8   1/1     Running   0          2m49s   10.100.1.2   k8s232.oldboyedu.com   <none>           <none>
复制代码
(6)测试跨节点Pod之间的通讯
  1. [root@k8s231.oldboyedu.com ~]# kubectl exec  linux85-ds-m5zd8 -- ping -c 3  10.100.2.2
  2. PING 10.100.2.2 (10.100.2.2): 56 data bytes
  3. 64 bytes from 10.100.2.2: seq=0 ttl=62 time=0.417 ms
  4. 64 bytes from 10.100.2.2: seq=1 ttl=62 time=0.299 ms
  5. 64 bytes from 10.100.2.2: seq=2 ttl=62 time=0.404 ms
  6. --- 10.100.2.2 ping statistics ---
  7. 3 packets transmitted, 3 packets received, 0% packet loss
  8. round-trip min/avg/max = 0.299/0.373/0.417 ms
  9. [root@k8s231.oldboyedu.com ~]#
复制代码
(7)删除ds资源
  1. [root@k8s231.oldboyedu.com ~]# kubectl delete -f oldboyedu-linux85-ds.yaml
  2. daemonset.apps "linux85-ds" deleted
复制代码
9、重启harbor无法访问服务标题办理

  1. [root@harbor ~]# cd /oldboyedu/softwares/harbor/
  2. [root@harbor harbor]# ll
  3. 总用量 597996
  4. drwxr-xr-x 5 root root        58 2024-06-12 09:06 certs
  5. drwxr-xr-x 3 root root        20 2024-06-12 09:09 common
  6. -rw-r--r-- 1 root root      3398 2022-01-12 12:08 common.sh
  7. -rw-r--r-- 1 root root      5412 2024-06-12 09:09 docker-compose.yml
  8. -rw-r--r-- 1 root root 612306524 2022-01-12 12:09 harbor.v1.10.10.tar.gz
  9. -rw-r--r-- 1 root root      5962 2024-06-12 09:09 harbor.yml
  10. -rwxr-xr-x 1 root root      2284 2022-01-12 12:08 install.sh
  11. -rw-r--r-- 1 root root     11347 2022-01-12 12:08 LICENSE
  12. -rwxr-xr-x 1 root root      1750 2022-01-12 12:08 prepare
  13. [root@harbor harbor]# docker-compose ps
  14.       Name                     Command               State                   Ports               
  15. --------------------------------------------------------------------------------------------------
  16. harbor-core         /harbor/harbor_core              Up                                          
  17. harbor-db           /docker-entrypoint.sh            Up      5432/tcp                             
  18. harbor-jobservice   /harbor/harbor_jobservice  ...   Up                                          
  19. harbor-log          /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp            
  20. harbor-portal       nginx -g daemon off;             Up      8080/tcp                             
  21. nginx               nginx -g daemon off;             Up      0.0.0.0:80->8080/tcp,:::80->8080/tcp,
  22.                                                              0.0.0.0:443->8443/tcp,:::443->8443/tc
  23.                                                              p                                    
  24. redis               redis-server /etc/redis.conf     Up      6379/tcp                             
  25. registry            /home/harbor/entrypoint.sh       Up      5000/tcp                             
  26. registryctl         /home/harbor/start.sh            Up               
  27. [root@harbor harbor]# docker-compose ps
  28.       Name                     Command                State               Ports         
  29. -----------------------------------------------------------------------------------------
  30. harbor-core         /harbor/harbor_core              Exit 128                           
  31. harbor-db           /docker-entrypoint.sh            Exit 137                           
  32. harbor-jobservice   /harbor/harbor_jobservice  ...   Exit 128                           
  33. harbor-log          /bin/sh -c /usr/local/bin/ ...   Up         127.0.0.1:1514->10514/tcp
  34. harbor-portal       nginx -g daemon off;             Exit 128                           
  35. nginx               nginx -g daemon off;             Exit 128                           
  36. redis               redis-server /etc/redis.conf     Exit 128                           
  37. registry            /home/harbor/entrypoint.sh       Exit 137                           
  38. registryctl         /home/harbor/start.sh            Exit 137   
  39. [root@harbor harbor]# docker-compose down  -v -t 1
  40. Stopping harbor-log ... done
  41. Removing harbor-jobservice ... done
  42. Removing nginx             ... done
  43. Removing harbor-core       ... done
  44. Removing harbor-db         ... done
  45. Removing redis             ... done
  46. Removing registry          ... done
  47. Removing registryctl       ... done
  48. Removing harbor-portal     ... done
  49. Removing harbor-log        ... done
  50. Removing network harbor_harbor
  51. # 启动
  52. [root@harbor harbor]# docker-compose up -d
  53. [root@harbor harbor]# docker-compose ps
  54.       Name                     Command               State                   Ports               
  55. --------------------------------------------------------------------------------------------------
  56. harbor-core         /harbor/harbor_core              Up                                          
  57. harbor-db           /docker-entrypoint.sh            Up      5432/tcp                             
  58. harbor-jobservice   /harbor/harbor_jobservice  ...   Up                                          
  59. harbor-log          /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp            
  60. harbor-portal       nginx -g daemon off;             Up      8080/tcp                             
  61. nginx               nginx -g daemon off;             Up      0.0.0.0:80->8080/tcp,:::80->8080/tcp,
  62.                                                              0.0.0.0:443->8443/tcp,:::443->8443/tc
  63.                                                              p                                    
  64. redis               redis-server /etc/redis.conf     Up      6379/tcp                             
  65. registry            /home/harbor/entrypoint.sh       Up      5000/tcp                             
  66. registryctl         /home/harbor/start.sh            Up   
复制代码
本日作业:
(1)完成的全部训练并整理头脑导图;
(2)手绘K8S架构图并可以或许清晰每个组件的作用;
扩展作业:
使用ansible的基于kubeadm一键构建K8S集群。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

雁过留声

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表