一、K8S第一步搭建

一、初始化操作

  • 1.1、关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    
  • 关闭交换空间

    swapoff -a  # 临时
    sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久
    

重启才能生效

  • 根据规划设置主机名

    hostnamectl set-hostname <hostname>
    
  • 映射主机

    cat >> /etc/hosts << EOF
    192.168.113.120 k8s-master
    192.168.113.121 k8s-node1
    192.168.113.122 k8s-node2
    EOF
    
  • 安装了docker,需要关闭 Docker 的 cgroups

    vim  /etc/docker/daemon.json
    
    {
      "exec-opts": ["native.cgroupdriver=systemd"]
    }
    

二、安装软件

2.1、k8s下载源设置
  • 更新系统软件包列表并升级已安装的软件包:
sudo apt update
sudo apt upgrade -y
  • 添加 Kubernetes 签名密钥:
curl -O https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg
  • 将下载的密钥文件导入到系统的 APT 密钥环中:
sudo apt-key add apt-key.gpg
  • 添加 Kubernetes 软件包存储库
vim /etc/apt/sources.list.d/kubernetes.list
  • 添加如下内容
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
  • 更新软件列表
sudo apt update
2.2、指定版本安装
  • 使用apt安装
sudo apt install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
  • 查看是否安装成功和版本号
kubelet --version
kubectl version --shor
  • 禁用自动更新:为了避免通过 APT 自动升级这些组件,可以将它们标记为被锁定状态。执行以下命令禁用自动更新。
sudo apt-mark hold kubelet kubeadm kubectl
  • 启动 kubelet 服务:执行以下命令,启动 kubelet 服务。
systemctl enable kubelet
  • 查看启动状态
sudo systemctl status kubelet
  • 查看日志
journalctl -xefu kubelet
kubeadm reset

三、k8s集群配置

3.1、在主节点执行,集群初始化,并且指定主节点
kubeadm init \
      --apiserver-advertise-address=192.168.110.100 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.23.6 \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16
命令 说明
kubeadm init 用于初始化 Kubernetes 集群的命令。它会根据提供的参数配置和创建一个新的 Kubernetes 集群
apiserver-advertise-address 通过该参数指定 kube-apiserver 的发布地址,这是集群中其他节点连接到 master 节点的地址
image-repository 指定使用的容器镜像仓库。
kubernetes-version 过该参数指定要安装的 Kubernetes 版本
service-cidr 指定 Kubernetes 服务的 IP 地址范围。这是 Kubernetes 服务分配的 IP 地址池,用于服务发现和负载均衡。
pod-network-cidr 指定 Pod 网络的 IP 地址范围。这是为 Kubernetes Pod 分配的 IP 地址池,用于容器之间的通信。

初始化成功后,在后面日志最后会有一段加入集群的命令,例如:

kubeadm join 192.168.31.100:6443 --token x6v0kg.l40l5kjqapkrycv1 \
	--discovery-token-ca-cert-hash sha256:343238376e044d3d73edc8739ff07e8a02bc7bc2d68d7dba548df568bba7231b
3.2、配置API 通信需要使用的身份验证信息
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

#配置完后就可以使用 kubectl get nodes 查看节点信息
3.3、节点加入集群

在子节点上执行命令,加入刚才初始化的集群

kubeadm join xxx.xxx.xxx.xxx:6443 --token jnhrwg.owebyxwhjd97l4p2 --discovery-token-ca-cert-hash sha256:817b100b0f222826dd8870d9a8700cbdc93f2dce19b38d42b8981462466ca024
  • 端口号固定,ip填主节点的。

  • token值,可以使用kubeadm token list 查看,或者kubeadm token create 创建一个

  • discovery-token-ca-cert-hash sha256 , 使用如下命令获取,记得拼接sha256:

    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
    
3.4、配置CNI网络插件

下载calico配置文件,可能网络会超时, 这个也需要注意下载的目录

curl https://docs.projectcalico.org/manifests/calico.yaml -O

修改 calico.yaml文件中的CALICO_IPV4POOL_CIDR 配置信息,和初始化集群中的cidr 相同

- name: CALICO_IPV4POOL_CIDR
  value: "10.244.0.0/16"

查看 calico.yaml 需要的镜像

grep image calico.yaml

他需要的镜像加上了下载源地址,是外网的,下载慢,所以可能需要手动下好,或者去掉下载源

将文件中的镜像下载地址去除,让使用我们的自己设置的镜像源

sed -i 's#docker.io/##g' calico.yaml

执行calico.yaml文件

kubectl apply -f calico.yaml

执行完可以查看系统的pod启动情况

kubectl get po -n kube-system

其他可能使用到的命令



四、使用Nginx测试K8S集群

1、创建部署

kubectl create deployment nginx --image=nginx

2、暴露端口

kubectl expose deployment nginx --port=80 --type=NodePort

3、查看 pod 以及服务信息

kubectl get pod,svc

4、查看部署信息

kubectl get deploy

5、将ngixn部署扩展为3个

kubectl scale deploy --replicas=3 nginx

6、其他命令

# 如果发现其他节点一直创建失败,可以先删除指定的pod
kubectl delete pod nginx-85b98978db-gtppc

#再去查看pod信息的时候,就会发现又开始创建另外一个了
kubectl get po

# 删除部署的ngin
kubectl delete deploy nginx
五、部署常用到的命令

查看 pods

kubectl get po

查看系统级别的pods信息

kubectl get po -n kube-system

-n 是指命名空间,kube-system是属于k8s自带的

你可能感兴趣的:(Kubernetes,运维,kubernetes,容器,云原生)