# Các đối tác

LLMS index: [llms.txt](/llms.txt)

---

<section id="users">
    <h5>Kubernetes phối hợp làm việc với các đối tác để tạo ra một codebase mạnh mẽ hỗ trợ một loạt các nền tảng bổ sung.</h5>
    <div class="col-container">
      <div class="col-nav">
        <center>
          <h5>
            <b>Các nhà cung cấp dịch vụ được chứng nhận bởi Kubernetes (KCSP)</b>
          </h5>
          <br>Các nhà cung cấp dịch vụ được chứng nhận với bề dày kinh nghiệm sẽ trợ giúp các tổ chức kinh doanh, các công ty ứng dụng Kubernetes nhanh chóng.
          <br><br><br>
          <button class="button landscape-trigger landscape-default" data-landscape-types="special--kubernetes-certified-service-provider" id="kcsp">Xem các đối tác KCSP</button>
          <br><br>Bạn muốn trở thành một
          <a href="https://www.cncf.io/certification/kcsp/">KCSP</a>?
        </center>
      </div>
      <div class="col-nav">
        <center>
          <h5>
            <b>Các nhà phân phối Kubernetes, dịch vụ hosting, dịch vụ cài đặt</b>
          </h5>Tiêu chuẩn tương thích về phần mềm bảo đảm rằng các phiên bản Kubernetes từ các nhà cung cấp sẽ hỗ trợ các bộ API được yêu cầu bởi khách hàng.
          <br><br><br>
          <button class="button landscape-trigger" data-landscape-types="platform" id="conformance">Xem các đối tác Conformance</button>
          <br><br>Bạn muốn trở thành một
          <a href="https://www.cncf.io/certification/software-conformance/">Kubernetes Certified</a>?
        </center>
      </div>
      <div class="col-nav">
        <center>
          <h5>
            <b>Các đối tác đào tạo Kubernetes (KTP)</b>
          </h5>
          <br>Các đối tác đào tạo được chứng nhận đã và đang sở hữu bề dày kinh nghiệm trong lĩnh vực đám mây.
          <br><br><br>
          <button class="button landscape-trigger" data-landscape-types="special--kubernetes-training-partner" id="ktp">Xem các đối tác KTP</button>
          <br><br>Bạn muốn trở thành một
          <a href="https://www.cncf.io/certification/training/">KTP</a>?
        </center>
      </div>
    </div>
    
    
    
    
    
    <script>
    function updateLandscapeSource(button,shouldUpdateFragment) {
      console.log({button: button,shouldUpdateFragment: shouldUpdateFragment});
      try {
        if(shouldUpdateFragment) {
          window.location.hash = "#iframe-landscape-"+button.id;
          
        } else {
          var landscapeElements = document.querySelectorAll("#landscape");
          let categories=button.dataset.landscapeTypes;
          let link = `https://landscape.cncf.io/embed/embed.html?key=${encodeURIComponent(categories)}&headers=false&style=shadowed&size=md&bg-color=%23d95e00&fg-color=%23ffffff&iframe-resizer=true`
          landscapeElements[0].src = link;
        }
      }
      catch(err) {
        console.log({message: "error handling Landscape switch", error: err})
      }
    }
    
    
    document.addEventListener("DOMContentLoaded", function () {
      let hashChangeHandler = () => {
        if (window.location.hash) {
          let selectedTriggerElements = document.querySelectorAll(".landscape-trigger"+window.location.hash);
          if (selectedTriggerElements.length == 1) {
            landscapeSource = selectedTriggerElements[0];
            console.log("Updating Landscape source based on fragment:", window
              .location
              .hash
              .substring(1));
            updateLandscapeSource(landscapeSource,false);
          }
        }
      }
      var landscapeTriggerElements = document.querySelectorAll(".landscape-trigger");
      landscapeTriggerElements.forEach(element => {
        element.onclick = function() {
            updateLandscapeSource(element,true);
        };
      });
      var landscapeDefaultElements = document.querySelectorAll(".landscape-trigger.landscape-default");
      if (landscapeDefaultElements.length == 1) {
        let defaultLandscapeSource = landscapeDefaultElements[0];
        updateLandscapeSource(defaultLandscapeSource,false);
      }
      window.addEventListener("hashchange", hashChangeHandler, false);
       
      hashChangeHandler();
    });
    </script><div id="frameHolder">
      
      <style>
         
        #iframe-landscape-kcsp, #iframe-landscape-conformance, #iframe-landscape-kcntp {
          scroll-margin-top: 35px;
        }
      </style>
      <iframe id="iframe-landscape-kcsp" src="https://landscape.cncf.io/embed/embed.html?key=special--kubernetes-certified-service-provider&headers=true&style=shadowed&size=md&bg-color=%233371e3&fg-color=%23ffffff&iframe-resizer=true" style="width: 1px; min-width: 100%; min-height: 100px; border: 0;"></iframe>
      <iframe id="iframe-landscape-conformance" src="https://landscape.cncf.io/embed/embed.html?key=platform&headers=true&style=shadowed&size=md&bg-color=%233371e3&fg-color=%23ffffff&iframe-resizer=true" style="width: 1px; min-width: 100%; min-height: 100px; border: 0;"></iframe>
      <iframe id="iframe-landscape-kcntp" src="https://landscape.cncf.io/embed/embed.html?key=special--kubernetes-and-cloud-native-training-partner&headers=true&style=shadowed&size=md&bg-color=%233371e3&fg-color=%23ffffff&iframe-resizer=true" style="width: 1px; min-width: 100%; min-height: 100px; border: 0;"></iframe>
      <script>
        iFrameResize({ }, '#iframe-landscape-kcsp');
        iFrameResize({ }, '#iframe-landscape-conformance');
        iFrameResize({ }, '#iframe-landscape-kcntp');
      </script>
      
    </div>
</section>

<style>
    /*  SECTIONS  */
    .section {
    	clear: both;
    	padding: 0px;
    	margin-bottom: 2em;
    }
    
    .kcsp_section {
    	clear: both;
    	padding: 0px;
    	margin-bottom: 2em;
    }
    
    /*  COLUMN SETUP  */
    .col {
    	display: block;
    	float:left;
    	margin: 1% 0 1% 1.6%;
    	background-color: #f9f9f9;
    }
    .col:first-child { margin-left: 0; }
    
    
    /*  GROUPING  */
    .group:before,
    .group:after {
    	content:"";
    	display:table;
    }
    .group:after {
    	clear:both;
    }
    .group {
        zoom:1; /* For IE 6/7 */
    }
    
    /*  GRID OF THREE  */
    .span_3_of_3 {
    	width: 35%;
    	background-color: #f9f9f9;
    	padding: 20px;
    }
    .span_2_of_3 {
    	width: 35%;
    	background-color: #f9f9f9;
    	padding: 20px;
    }
    .span_1_of_3 {
    	width: 35%;
    	background-color: #f9f9f9;
    	padding: 20px;
    }
    
    .col-container {
        display: table; /* Make the container element behave like a table */
        width: 100%; /* Set full-width to expand the whole page */
    		padding-bottom: 30px;
    }
    
    .col-nav {
        display: table-cell; /* Make elements inside the container behave like table cells */
    		width: 18%;
    		background-color: #f9f9f9;
    		padding: 20px;
    		border: 5px solid white;
    }
    
    /*  GO FULL WIDTH AT LESS THAN 480 PIXELS */
    
    @media only screen and (max-width: 480px) {
    	.col { margin: 1% 0 1% 0%;}
    	.span_3_of_3, .span_2_of_3, .span_1_of_3 { width: 100%; }
    }
    
    @media only screen and (max-width: 650px) {
        .col-nav {
            display: block;
            width: 100%;
        }
    }
    
    .button{
      max-width: 100%;
    	box-sizing: border-box;
    	margin: 0;
    	display: inline-block;
    	border-radius: 6px;
    	padding: 0 20px;
    	line-height: 40px;
    	color: #ffffff;
    	font-size: 16px;
    	background-color: #3371e3;
    	text-decoration: none;
     }
    
    h5 {
    	font-size: 16px;
    	line-height: 1.5em;
    	margin-bottom: 2em;
    }
    
    #usersGrid a {
    	display: inline-block;
    	background-color: #f9f9f9;
    }
    
    #ktpContainer, #distContainer, #kcspContainer, #isvContainer, #servContainer {
    	position: relative;
    	width: 100%;
    	display: flex;
    	justify-content: space-between;
    	flex-wrap: wrap;
    }
    
    #isvContainer {
    	margin-bottom: 80px;
    }
    
    #kcspContainer {
    	margin-bottom: 80px;
    }
    
    #distContainer {
    	margin-bottom: 80px;
    }
    
    #ktpContainer {
    	margin-bottom: 80px;
    }
    
    .partner-box {
    	position: relative;
    	width: 47%;
    	max-width: 48%;
    	min-width: 48%;
    	margin-bottom: 20px;
    	padding: 20px;
    	flex: 1;
    	display: flex;
    	justify-content: left;
    	align-items: flex-start;
    }
    
    .partner-box img {
    	background-color: #f9f9f9;
    }
    
    .partner-box > div {
    	margin-left: 30px;
    }
    
    .partner-box a {
    	color: #3576E3;
    }
    
    @media screen and (max-width: 1024px) {
    	.partner-box {
    		flex-direction: column;
    		justify-content: flex-start;
    	}
    
    	.partner-box > div {
    		margin: 20px 0 0;
    	}
    }
    
    @media screen and (max-width: 568px) {
    	#ktpContainer, #distContainter, #kcspContainer, #isvContainer, #servContainer {
    		justify-content: center;
    	}
    
    	.partner-box {
    		flex-direction: column;
    		justify-content: flex-start;
    		width: 100%;
    		max-width: 100%;
    		min-width: 100%;
    	}
    
    	.partner-box > div {
    		margin: 20px 0 0;
    	}
    }
    
    @media screen and (max-width: 568px) {
    	#ktpContainer, #distContainer, #kcspContainer, #isvContainer, #servContainer {
    		justify-content: center;
    	}
    
    	.partner-box {
    		flex-direction: column;
    		justify-content: flex-start;
    		width: 100%;
    		max-width: 100%;
    		min-width: 100%;
    	}
    
    	.partner-box > div {
    		margin: 20px 0 0;
    	}
    }

</style>
