首页 > 其他分享 >部署K8S-1-23

部署K8S-1-23

时间:2024-02-26 14:58:39浏览次数:35  
标签:kubectl kubernetes 23 部署 sudo etc -- docker K8S

DEVops 入门

1 部署K8S

1.1 节点准备

节点名 ip 功能
k8s-master 10.0.0.150
k8s-node1 10.0.0.151
k8s-node2 10.0.0.152

1.2 初始操作

在所有节点执行

#1 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
#2 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  #永久
setenforce 0 #临时
# 关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
init 6
# 设置主机名
hostnamectl set-hostname k8s-xxxx
# 设置hosts
cat >> /etc/hosts << EOF
10.0.0.150 k8s-master
10.0.0.151 k8s-node1
10.0.0.152 k8s-node2
EOF
# 将桥接的IPv4流量传递到iptavles的链
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

1.3 安装基础软件

在所有节点操作

1.3.1安装 Docker

# 设置docker rpm仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker engine
yum list docker-ce --showduplicates | sort -r
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


# 启动docker
sudo systemctl start docker
sudo systemctl enable docker
# 测试docker
sudo docker run hello-world
#删除docker
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# 配置cgroup
docker info|grep Driver
vi /etc/docker/daemon.json
添加 {"exec-opts": ["native.cgroupdriver=systemd"]}
# 重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

1.3.2 添加阿里云yum源

# 添加阿里云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

1.3.3 安装kubadm,kubelet,kubectl

# 安装kubadm,kubelet,kubectl
yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
systemctl enable kubelet

1.4 部署Kubernetes Master

在Master节点执行

# 初始化kubelet
kubeadm init \
	--apiserver-advertise-address=10.0.0.150 \
	--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
# 重置kubelet
kubeadm reset

# 初始化结果
Your Kubernetes control-plane has initialized successfully!

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

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.0.0.150:6443 --token oigm3v.ltwko6kbsxbt28fo \
        --discovery-token-ca-cert-hash sha256:755f5368c744cd4f22cc3129b634b2c8e198497c9dcfd3623e7f410e44cfdd06
# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#测试kubectl
kubectl get po
kubectl get nodes

1.5 添加Kubernetes node

在所有计算节点执行

# 加入群集
kubeadm join 10.0.0.150:6443 --token oigm3v.ltwko6kbsxbt28fo \
        --discovery-token-ca-cert-hash sha256:755f5368c744cd4f22cc3129b634b2c8e198497c9dcfd3623e7f410e44cfdd06
#重新申请token
kubeadm token create
kubeadm token list
#获得discovery的hash值 sha256: + 
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt|openssl rsa -pubin -outform der 2>/dev/null|\
openssl dgst -sha256 -hex|sed 's/^.* //'

1.6 部署CNI网络插件

在master节点执行

# 查看组件状态
kubectl get componentstatus   
kubectl get cs
kubectl get pods -n kube-system
#下载calico配置文件
mkdir -p /opt/k8s
cd /opt/k8s
curl https://docs.tigera.io/archive/v3.25/manifests/calico.yaml -O

#修改calico.yaml 文件中的CALICO_IPV4POOL_CIDR配置,修改为与初始化的cidr一样
#修改IP_AUTODETECTION_METHOD下的网卡名称  
#删除镜像docker.io/ 前缀
grep image calico.yaml
sed -i 's#docker.io/##g' calico.yaml
# 部署calico
kubectl apply -f calico.yaml
kubectl get po -n kube-system
kubectl describe po calico-kube-controllers-cd8566cf-sftxd -n kube-system
#拉取镜像的时间比较长
#测试
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort

1.7 在任意节点使用kubectl

# 拷贝master节点的/etc/kubernetes/admin.conf 到其他节点
scp /etc/kubernetes/admin.conf [email protected]:/etc/kubernetes/
scp /etc/kubernetes/admin.conf [email protected]:/etc/kubernetes/
# 在要运行kubectl的节点上配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile 

标签:kubectl,kubernetes,23,部署,sudo,etc,--,docker,K8S
From: https://www.cnblogs.com/goldtree358/p/18034316

相关文章

  • 动手实践丨轻量级目标检测与分割算法开发和部署(RK3568)
    本文分享自华为云社区《自动驾驶(AIOT)-轻量级目标检测与分割算法开发和部署(RK3568)【玩转华为云】》,作者:HouYanSong。本文将在ModelArts平台上开发轻量级目标检测与分割算法,并使用ModelBox框架在RK3568开发板上实现模型推理和部署。数据准备我们收集了一份200张由Labelme......
  • k8s pod重启 deployment重启
     1.15版本之后可通过kubectlrolloutrestartdeployment-n命令来实现滚动重启POD该命令会先创建待用POD,待新POD运行成功后,再关闭原有POD。因此需要保证node节点数量大于POD数量,否则新POD无法正常启动。当POD数量与node数量相同时,可使用先减小deployment规模的方法,先减小......
  • K8S测试lcoal StorageClass PVC
    测试lcoalStorageClassvilocal-path.yaml---apiVersion:v1kind:PersistentVolumeClaimmetadata:name:local-path-pvcspec:storageClassName:nfs#<===使用哪个SCaccessModes:-ReadWriteOnceresources:requests:storage:10Gi---......
  • 雾锁王国服务器一键部署教程
    去年1月24日有一款游戏登录了Steam,它的名字叫《雾锁王国》,如果不出意外的话,它可能就是游戏界的汪峰了,因为此时正值另一款游戏《幻兽帕鲁》热度正高之时。。然而它顶住了帕鲁的压力,短时间内就荣登Steam热度趋势榜单的榜首。到目前为止已经收获了超过2.7w条的好评,好评率高......
  • 2023 re:Invent 用 Amazon Q 打造你的知识库
    前言随着ChatGPT的问世,我们迎来了许多创新和变革的机会。一年一度的亚马逊云科技大会re:Invent也带来了许多前言的技术,其中AmazonCEOAdamSelipsky在2023re:Invent大会中介绍AmazonQ让我印象深刻,这预示着生成式AI的又一个里程碑。亚马逊云科技开发者社区为开......
  • 近期总结 2024.2.23
    dp专场。CF1784EInfiniteGame题意:一个由a和b构成的字符串\(s\),长度为\(n\)。两个人Alice和Bob在玩游戏,第\(i\)场中如果\(s_{(i-1)\bmodn+1}\)为a则Alice赢,否则Bob赢。两人遵循三局两胜原则:每当一个人胜场满两场时,称那个人赢了一轮,然后清空胜场记录开始......
  • 在K8S中,Pod亲和性和反亲和性作用区别有哪些?该如何使用?
    1.Pod亲和性(PodAffinity)作用:资源协同:当Pod需要与具有特定标签的Node或已经在特定Node上运行的Pod紧密合作时,比如共享硬件加速器或者进行高效的数据交互,可以利用Pod亲和性将这些Pod调度到一起。负载分片:在大规模集群中,可以根据业务需求,将相似类型的Pod调度到同一组Node上,以......
  • 在K8S中,worke节点如何加入K8S高可用集群?
    在Kubernetes(K8S)中,将一个Worker节点加入到高可用集群的过程与加入单Master集群大体相似,但需要注意的是,高可用集群中的Master通常是通过负载均衡器暴露服务端点的,这样无论哪个Master节点宕机,Worker节点都可以连接到活跃的Master节点。以下是加入高可用Kubernetes集群的具体步骤:1.......
  • 在K8S中,kube-proxy的工作模式是什么?
    kube-proxy在Kubernetes集群中负责实现Service的网络代理和负载均衡功能,支持三种不同的工作模式:Userspace模式(已过时):在早期的Kubernetes版本中(1.2之前),kube-proxy默认使用Userspace模式。在此模式下,kube-proxy作为一个用户空间进程运行,为每个Service创建一个......
  • 在K8S中,影响pod调度的因素有哪些?
    在Kubernetes(K8s)中,影响Pod调度的因素非常多,主要包括但不限于以下几个方面:资源需求与限制:资源请求(Requests):Pod在创建时声明需要的最小资源量,如CPU和内存。调度器会寻找至少能满足这些资源请求的Node进行调度。资源限额(Limits):Pod可使用的最大资源量,超过限额可能会被系统限......